Technote 1125
Building a 3D application that calls RAVE
3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åv
çÇÇ¢ÉpÉtÉHÅ[É}ÉìÉXÇî≠äˆÇ∑ÇÈ3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇê›åvÇ∑ÇÈÇ…ÇÕÅAëΩÇ≠ÇÃçÏãΔÇ™ïKóvÇ≈Ç∑ÅBçLÇ¢world-spacesÇΔëÂó ÇÃÉ|ÉäÉSÉìÇópÇ¢ÇÈÇÃÇÕLJÇÕÇ‚ó·äOÇ≈Ç»Ç≠èÌéØÇΔǻǡǃǢNjÇ∑ÅBê¨å˜Ç∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕà»â∫ÇÃólÇ»ÅAÇ¢Ç≠ǬǩÇÃàŸÇ»Ç¡ÇΩéÌófiÇÃèàóùÇ™ïKóvÇΔÇ»ÇËÇ‹Ç∑ÅB
- â¬éã/ïsâ¬éãÇÃîªíf(Visibility determination) --
éwíËÇ≥ÇÍÇΩåªç›ÇÃÉJÉÅÉâÇÃà íuÇ©ÇÁÅAÇ«ÇÃÉ|ÉäÉSÉìÇ™å©Ç¶ÇÈÇ©ÇÃîªífÅBÉIÉuÉWÉFÉNÉgÇÃviewing
frustumÇ©ÇÁäOÇÍÇΩïîï™Ç‚ëºÇÃÉ|ÉäÉSÉìÇ…âBÇÍÇΩïîï™ÇÕÅAå¯ó¶ìIÇ…ÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇÈÇ◊Ç´Ç≈Ç∑ÅB
- ÉfÉBÉeÅ[ÉãÇÃÉåÉxÉã --
âìÇ≠DždžÇÈÉIÉuÉWÉFÉNÉgÇÕÅAãflÇ≠ÇÃLJÇÃÇÊÇËè≠ǻǢÉ|ÉäÉSÉìÇ≈ç\ê¨Ç≥ÇÍÇÈÇ◊Ç´Ç≈Ç∑ÅB
- âBñ èúãé(Hidden Surface Removal) --
É|ÉäÉRÉìÇÃï`é ÇÕÅAǪÇÃê[ìxèá(depth
ordering)Ç™ï€èÿÇ≥ÇÍÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
- ÉâÉXÉ^âª(Rasterization) --
ǢǩDžç≈èIìIÇ…ìæÇÁÇÍÇΩÉ|ÉäÉSÉìÇÃÉäÉXÉgÇçÇë¨Ç…ï`é Ç∑ÇÈÇ©ÅAÇ‹ÇΩÉsÉNÉZÉãÇÃçƒï`âÊÇç≈è¨ÇΔÇ∑ÇÈÇ©
ÉnÅ[ÉhÉEÉFÉAÅEÉAÉEÉZÉâÉåÅ[ÉVÉáÉìÇÕ3DÉAÉvÉäÉPÅ[ÉVÉáÉìçÏê¨ÇÃÉãÅ[ÉãÇïœÇ¶Ç‹ÇµÇΩÅBÉâÉXÉ^âªÇÕí èÌÉnÅ[ÉhÉEÉFÉAÇ…ÇÊǡǃé¿çsÇ≥ÇÍÅAëºÇÃèàóùÇΔÇÕîÒìØä˙Ç…çsÇÌÇÍÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈz-bufferingÇÕÅAâBñ èúãéèàóùÇÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈèàóùÇÊÇËçÇë¨Ç…çsǧÇΩÇflÇ…égÇÌÇÍÇ‹Ç∑ÅBÉfÉxÉçÉbÉpÇÕ3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åvéûÇ…ÅAâ¬éã/ïsâ¬éãÇÃîªífÇΔÉfÉBÉeÅ[ÉãÇÃÉåÉxÉãí≤êÆÇ…è≈ì_ÇçiÇÈDZÇΔÇ…ÇÊÇËÅA3DÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉAÉhÉoÉìÉeÅ[ÉWÇãùéÛÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBà»â∫ÇÕÉnÅ[ÉhÉEÉFÉAÅEÉxÅ[ÉXÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇç\ízÇ∑ÇÈèÍçáÇÃÉTÉWÉFÉXÉ`ÉáÉìÇ≈Ç∑ÅB
3DÉAÉNÉZÉâÉåÅ[É^ÇÕîÒèÌÇ…å¯ó¶ÇÃó«Ç¢pixel
pipelineÇ≈Ç∑Ç™ÅAÉ|ÉäÉSÉìÅEÉXÉLÉÉÉìÉâÉCÉìÅEå¬ÅXÇÃÉsÉNÉZÉãñàÇ…åàÇ‹ÇÈÉIÅ[ÉoÅ[ÉwÉbÉhǙdžÇËÇ‹Ç∑ÅBëΩÇ≠ÇÃèÍçáÅAdžÇÈéÌÇÃ
filtering
modeÇ≈ÇÃï`âÊÇÕÉIÅ[ÉoÅ[ÉwÉbÉhÇà¯Ç´ãNDZǵNjÇ∑ÅBó·Ç¶ÇŒÅAtrilinear
filteringÇÕpoint
samplingÇÃ8î{ÇÃtexelÇÃà¯Ç´èoǵèàóùÇïKóvÇΔǵNjÇ∑ÅBPCIÉoÉXÇ…ÇÊÇÈÉ|ÉäÉSÉìÅEÉfÅ[É^ÇÃì]ëóÇ…ÇÊÇÈÉIÅ[ÉoÅ[ÉwÉbÉhÇ…â¡Ç¶ÇƒÅAèâä˙ÇÃÉAÉNÉZÉâÉåÅ[É^Ç≈ÇÕÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈÇRäpÉ|ÉäÉSÉìÇÃèÄîıèàóùÇ™ñcëÂÇ…Ç»ÇËÅAÉ|ÉäÉSÉìdžÇΩÇËÇÃèÄîıéûä‘Ç™âΩÉTÉCÉNÉãLJëùǶǃǵNjǢNjÇ∑ÅB
è¨Ç≥Ç»É|ÉäÉSÉìÇÃÉåÉìÉ_ÉäÉìÉOéûä‘ÇÃëçåvÇÕÅAÉ\ÉtÉgÉEÉFÉAÇÃǛDžÇÊÇÈÉåÉìÉ_ÉäÉìÉOÇ…ïKóvÇ»éûä‘ÇÊÇËëΩÇ≠Ç»ÇËÇ‹Ç∑ÅBè≠Ç»Ç≠ÇΔLJ1é–ÇÃÉfÉxÉçÉbÉpÇ™ÅAîfiìôÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÊǡǃÉåÉìÉ_ÉäÉìÉOÇ≥ÇÍÇΩÉ|ÉäÉSÉìÇÃëΩÇ≠ÇÕ4ÉsÉNÉZÉãǩǪÇÍÇÊÇËè¨Ç≥ǻLJÇÃÇæÇΔïÒçêǵǃǢNjÇ∑ÅBDZÇÃèÍçáÅAí·ÉåÉxÉãÇÃÉfÉBÉeÅ[ÉãÇÃÉÇÉfÉãÇçÏÇÍÇŒÅAÉnÅ[ÉhÉEÉFÉAÇ…ëóÇÁÇÍÇÈÉ|ÉäÉìÉSÉìÇÃêîÇå∏ÇÁǵÅAÉCÉÅÅ[ÉWÇÃïiéøÇ…ä÷Ç∑ÇÈëŒâøÇè¨Ç≥Ç≠ǵNjÇ∑ÅB
â¬éã/ïsâ¬éãÇÃîªíf(Visibility determination)
ëÂÇ´Ç»ÉèÅ[ÉãÉhÇçÏê¨Ç∑ÇÈéûÇ…ÅAÉ|ÉäÉSÉìÇÃǩǻÇËÇÃïîï™ÇÕÉJÉÅÉâà íuÇ©ÇÁÇÕå©Ç¶Ç»Ç¢Ç≈ǵÇÂǧÅBÇ¢Ç≠ǬǩÇÕéãñÏ(viewing
frustum)Ç©ÇÁäÆëSÇ…ÇÕÇ∏ÇÍǃǢNjÇ∑ÅBécÇËÇÃå©Ç¶Ç»Ç¢ïîï™ÇÕÅAëºÇÃÉ|ÉäÉSÉìÇ…âBÇÍǃǢNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕíPèÉÇ…Ç«ÇÒÇ«ÇÒÉfÅ[É^ÇÉnÅ[ÉhÉEÉFÉAÇ…ëóÇËçûÇfiÇÃÇ≈ÇÕÇ»Ç≠ÅAå¯ó¶ó«Ç≠É|ÉäÉSÉìÇ™ëIëÇ≥ÇÍÇÈólÉfÅ[É^Çä«óùǵÅAè\ï™ëÅÇ≠ï`âÊÇ≥ÇÍÇÈÇÊǧèúäOǵNjǵÇÂǧÅBÇ≥ÇÁÇ…ÅAäeÉ|ÉäÉSÉìÇǪÇÍǺÇÍÇ…ï`âÊÇ∑ÇÈDZÇΔÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇà¯Ç´ãNDZǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃîpä¸ÇÕå∞íòÇ»ÉpÉtÉHÅ[É}ÉìÉXÇÃí·â∫ÇèµÇ´Ç‹Ç∑ÅiDZÇÃè⁄ç◊ÇÕå„èqǵNjÇ∑ÅjÅBǩǬǃÉfÉxÉçÉbÉpÇ™égǡǃǴÇΩéËñ@Ç™2ǬdžÇËÇ‹Ç∑ÅBè⁄ç◊ÇÕêGÇÍÇ‹ÇπÇÒÇ™ÅAÇ«ÇøÇÁLJéQçlï∂å£ÇÃǻǩÇ≈àµÇÌÇÍǃǢNjÇ∑ÅB
Quakeñ@ÇÕBSPÉcÉäÅ[Çégǡǃç¿ïWèÓïÒÇä«óùǵNjÇ∑ÅBBSPÉcÉäÅ[ÇÃàÍǬÇÃóòì_ÇÕÅAéãñÏÇ…ì¸ÇÈǩǫǧǩÇÃàÍìxÇÃîªífÇ≈ǪÇÍà»â∫ÇÃÉTÉuÉcÉäÅ[ÇèúäOÇ≈Ç´ÅAëΩÇ≠ÇÃÉ|ÉäÉSÉìÇå¯ó¶ó«Ç≠èúäOÇ≈Ç´ÇÈéñÇ≈Ç∑ÅBÇ≥ÇÁÇ…ÅAQuakeÇÕÉcÉäÅ[ÇÃäeótÇÃâ¬éãÉ|ÉäÉSÉìÇÃÉãÅ[ÉYÇ»èWçáÇ…ëŒÇµÇƒéñëOÇÃåvéZÇçsǢNjÇ∑ÅBÉtÉåÅ[ÉÄÇÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈéûÇ…ÅAQuakeÇ≈ÇÕåªç›ÇÃótÇÃPVSÇ…ä‹Ç‹ÇÍÇÈÉ|ÉäÉSÉìǵǩçló∂ǵNjÇπÇÒÇÃÇ≈ÅAí≤ç∏ǵǻÇ≠ǃÇÕÇ»ÇÁǻǢÉ|ÉäÉSÉìÇÃêîÇÉhÉâÉXÉeÉBÉbÉNÇ…å∏ÇÁÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
Portalsñ@ÇÕÅAå¯ó¶ó«Ç≠É|ÉäÉSÉìÇèúãéÇ∑ÇÈLJǧàÍǬÇÃï˚ñ@Ç≈Ç∑ÅBàÍǬÇÃèoì¸ÇËå˚ǵǩǻǢï¬Ç¥Ç≥ÇÍÇΩïsìßñæÇ»ïîâÆÇÃíÜÇ©ÇÁÇÕÅAèoì¸ÇËå˚ÇÃå¸Ç±Ç§Ç™ÇÌDždžÇÈÉ|ÉäÉSÉìǵǩå©Ç¶Ç»Ç¢Ç≈ǵÇÂǧÅBèoì¸ÇËå˚ÇÕÅAéüÇÃïîâÆÇ÷ÇÃå∫ä÷(portal)ÇΔÇ»ÇËÇ‹Ç∑ÅBPortalÇégǡǃÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈÇ…ÇÕÅAïîâÆÇÃíÜÇÃëSǃÇÃÉ|ÉäÉSÉìÇï`âÊǵÅAåªç›ÇÃéãñÏ(viewing
frustum)Ç©ÇÁå©Ç¶ÇÈportalÇîªífǵÅAÉäÉJÅ[ÉVÉuÇ…portalÇ…ÇÊǡǃã∑ÇflÇÁÇÍÇΩéãñÏÇégǡǃéüÇÃïîâÆÇï`âÊǵǃǢǴNjÇ∑ÅB
Clipping
Ç¢Ç≠ǬǩÇÃÉnÅ[ÉhÉEÉFÉAÇÕÉåÉìÉ_ÉäÉìÉOÇ≥ÇÍÇΩëSǃÇÃÉsÉNÉZÉãÇ…é©ìÆìIÇ…ÉNÉäÉbÉsÉìÉOÇé{ǵNjÇ∑ÅBDZÇÍÇÕOpenGLÇÃ"scissor
clip"ÇΔǵǃímÇÁÇÍǃǢNjÇ∑ÅBñcëÂÇ»éOäpÇ™ÉeÉXÉgÇ∑Ç◊Ç´äÙêÁÇÃÉsÉNÉZÉãÇê∂Ç∂Ç≥ÇπÅAÉnÅ[ÉhÉEÉFÉAÇ…ÇÊǡǃîjä¸Ç≥ÇÍÇ‹Ç∑ÅBÇÊÇËÇÊÇ¢âñ@ÇÕÅAÉ\ÉtÉgÉEÉFÉAÇ…ÇÊǡǃalgorithmicallyÇ…É|ÉäÉSÉìÇÉNÉäÉbÉvÇ∑ÇÈéñÇ≈Ç∑ÅBRAVEÇÕÉGÉìÉWÉìÇ™ÉNÉäÉbÉsÉìÉOÇçsÇÌǻǢÇΔîªífÇ∑ÇÈÇÃÇ≈ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈RAVEÇ…ìnÇ∑ëOÇ…ëSǃÇÃÉ|ÉäÉSÉìÇ…ëŒÇµÇƒéñëOÇÃÉNÉäÉbÉsÉìÉOÇé{Ç∑ïKóvǙdžÇËÇ‹Ç∑ÅB
Z-Buffering
ÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈZ-BufferingÇÕÅAâBñ èúãéÇ…îÒèÌÇ…ñÇ…óßÇøÇ‹Ç∑Ç™ÅAàÍî ìIÇ…é¿ç€Ç…ÉåÉìÉ_ÉäÉìÉOÇ∑ÇÈÉoÉbÉtÉ@ÇÊÇËëΩÇ≠ÇÃÉÅÉÇÉäÇïKóvÇΔǵNjÇ∑ÅB2MbyteÇÃ2D/3DÉJÅ[ÉhÇ≈ÇÕÅA640x480ÇÃÉtÉçÉìÉgÅEÉoÉbÉNÅEz-bufferÇégǧÇΔÅAÉeÉLÉXÉ`ÉÉÇ…ÇÕ1/4Mbyteà»â∫ÇÃVRAMǵǩécÇËÇ‹ÇπÇÒÅB2MbyteÇÃÉJÅ[ÉhÇ≈é¿çsÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅAÉeÉNÉXÉ`ÉÉÇ…è\ï™Ç»VRAMÇó^ǶÇÈÇΩÇflÇ…ÅAÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈHSRÉAÉãÉSÉäÉYÉÄÇÃì±ì¸Ççló∂Ç∑ÇÈïKóvǙdžÇÈÇ≈ǵÇÂǧÅB
àÍïîÇÃÉnÅ[ÉhÉEÉFÉAÇÕÅAz-bufferingèàóùÇÇÊÇËå¯ó¶ìIÇ…çsǢNjÇ∑ÅBÉVÅ[ÉìÇÃàÍïîÇÃÉ|ÉäÉSÉìÇ™Ç∑Ç≈Ç…(BSPÉcÉäÅ[ÇÃólÇ…)É\Å[ÉgÇ≥ÇÍǃǢÇÈèÍçáÅAǪÇÃÉ|ÉäÉSÉìÇÃèáèòÇÉnÅ[ÉhÉEÉFÉAÇ…ëóÇÍÇŒÅAÉpÉtÉHÅ[É}ÉìÉXÇå¸è„Ç≥ÇπÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅAǪÇÃÉnÅ[ÉhÉEÉFÉAÇ≈"z
write"ÇÃï˚Ç™"z test"ÇÊÇËëÅÇ¢èÍçáÅA"z
test"ÇÉIÉtDžǵǃÉ\Å[ÉgǵÇΩÉ|ÉäÉSÉìÇâúÇ©ÇÁëOÇ…èáî‘Ç…ï`âÊǵNjÇ∑ÅBãtÇ…"z
test"ÇÃï˚Ç™"z
write"ÇÊÇËëÅÇ¢èÍçáÇÕÅAtestÇÉIÉìDžǵǃëOÇ©ÇÁâúÇ…ï`âÊǵNjÇ∑ÅBRAVEÇÕDZÇÃólÇ»ï˚ñ@Çå©Ç¬ÇØÇÈÇΩÇflÇÃAPIÇíÒãüǵNjÇπÇÒÇÃÇ≈ÅAólÅXÇ»ÉnÅ[ÉhÉEÉFÉAÇ≈džǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÉeÉXÉgÇ∑ÇÈDZÇΔÇ™ÅADZÇÃÇÊǧǻì¡ê´Çî≠å©Ç∑ÇÈéËèïÇØÇΔÇ»ÇÈÇ≈ǵÇÂǧÅB
Å@
RAVE
Ç™ä˙ë“Ç∑ÇÈLJÇÃÇÕ
RAVE ÇÕÉnÅ[ÉhÉEÉFÉAÇ…îÌÇπÇΩîÒèÌÇ…îñÇ¢ëwÇ≈Ç∑ÅBRAVE
ÉãÅ[É`ÉìÇÃåƒÇ—èoǵÇÕÇΩǢǃǢÇÃèÍçá RAVE
ÉhÉâÉCÉoÇíºê⁄åƒÇ—èoÇ∑ÇÃÇΔïœÇÌÇËÇ‹ÇπÇÒÅBRAVE
é©ëÃÇ…ÇÕÉIÅ[ÉoÅ[ÉwÉbÉhÇÕdžÇËÇ‹ÇπÇÒÅB
ÉfÉtÉHÉãÉgÇ≈ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™
QARenderStart
ÇåƒÇ—èoǵǃÉtÉåÅ[ÉÄÇäJénÇ∑ÇÈÇΔÅAÉGÉìÉWÉìÇÕ RAVE
ÉRÉìÉeÉLÉXÉgÇ≈éwíËÇ≥ÇÍÇΩêFÇ≈ÉoÉbÉNÉoÉbÉtÉ@Çèâä˙âªÇµÅAZ
ÉoÉbÉtÉ@Çãóó£ 1.0
Ç…ê›íËǵNjÇ∑ÅBë±Ç¢ÇƒÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉGÉìÉWÉìÇ…É|ÉäÉSÉìÇëóèoǵNjÇ∑ÅBÉ|ÉäÉSÉìÇÕdžÇÁÇ©Ç∂Çflï\é¶â¬î\óÃàÊÇ≈ÉNÉäÉbÉvÇ≥ÇÍÇƒÇ¢Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™
QARenderEnd
ÇåƒÇ—èoÇ∑ÇΔÅAé¿çsë“ÇøÇÃÉRÉ}ÉìÉhÇÕÇ∑Ç◊ǃÉnÅ[ÉhÉEÉFÉAÇ…ìfÇ´èoÇ≥ÇÍÅAÉnÅ[ÉhÉEÉFÉAÇÕîÒìØä˙Ç…ÉtÉåÅ[ÉÄÇÉtÉçÉìÉgÉoÉbÉtÉ@Ç…ÉRÉsÅ[ǵNjÇ∑ÅBRAVE
ÇÃèâä˙ÇÃÉoÅ[ÉWÉáÉì (Ç®ÇÊÇ—èâä˙ÇÃÉGÉìÉWÉìÇÃëΩÇ≠) ÇÕ
QARenderEnd
ÇÃíÜÇ≈ìØä˙ÇéÊÇËÅAÉnÅ[ÉhÉEÉFÉAÇÃèàóùÇÃèIóπÇë“ÇøÇ‹Ç∑ÅB
RAVE
ÉGÉìÉWÉìǙǫÇÒÇ»ílÇä˙ë“ǵǃǢÇÈÇÃÇ©ÇímÇÈÇΔï÷óòÇ≈Ç∑ÅBDZÇÃÇΩÇflÅAÉeÉNÉXÉ`ÉÉÇÃí∏ì_ÇÃç\ë¢ëÃ
(TQAVTexture)
Ç…ï€ë∂Ç≥ÇÍÇÈìTå^ìIÇ»ílÇå©ÇƒÇ›Ç‹ÇµÇÂǧÅBÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉO
(gouraud-shading) Ç≥ÇÍÇΩÉ|ÉäÉSÉìLJǟÇ⁄ìØólÇ≈Ç∑ÅB
x ÇΔ y ÇÕâÊñ ÇÃç¿ïWÇï\Ç∑ïÇìÆè¨êîì_ílÇ≈Ç∑ÅB640x480
ÉRÉìÉeÉLÉXÉgÇ≈ÇÕÅAǪÇÍǺÇÍílÇÃîÕàÕÇÕÅA0 <= x <
640 ÅA0 <= y < 480
Ç…Ç»ÇËÇ‹Ç∑ÅBâ∫ÇΔâEÇÃã´äEì_ÇÕä‹Ç‹ÇÍǻǢDZÇΔÇ…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBRAVE
ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇÕÉoÉEÉìÉfÉBÉìÉOÉ{ÉbÉNÉXÇÃäOë§Ç÷ÇÃï`âÊÇåüímǵNjÇ∑ÅB
z ÇÃílÇÕ 0 Ç©ÇÁ 1 Ç≈Ç∑ÅBçç°Çà 3D ÉnÅ[ÉhÉEÉFÉAÇ™ÉTÉ|Å[ÉgÇ∑ÇÈ
Z ÉoÉbÉtÉ@ÇÕÇŸÇΔÇÒÇ« 16 ÉrÉbÉgÇ≈Ç∑ÅBǵÇΩǙǡǃÅAZ
ÉoÉbÉtÉ@ÇÃílàÊÇÕç≈ëÂå¿ÅAégÇ¢ÇΩÇ¢ÇÕÇ∏Ç≈Ç∑ÅBÉqÉUÅ[ïΩñ (hither
plane) ÇÕ 0 ÇÃà íuÇ…íuÇ©Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBZ ÉoÉbÉtÉ@ÇÕç≈èâ
1.0 Ç…èâä˙âªÇ≥ÇÍÇÈÇÃÇ≈ÅAÉàÉìïΩñ (yon plane) ÇÇ´Ç¡ÇøÇË 1.0
ÇÃà íuÇ…íuÇ≠ÇΔÅAǪÇÃïΩñ è„Ç‹ÇΩÇÕǪÇÃãflÇ≠ÇÃÉsÉNÉZÉãÇÕï`âÊÇ≥ÇÍÇ‹ÇπÇÒÅBǪÇÃÇΩÇflÅAéãì_êçë‰ì‡ÇÃÇ∑Ç◊ǃÇÃì_Çï\é¶Ç∑ÇÈÇ…ÇΩÇflÇ…è\ï™Ç»ÅAç≈LJãflÇ¢à íuÇ…ÉàÉìïΩñ Çà⁄ìÆÇ≥ÇπÇÈÇΔÇÊÇ¢Ç≈ǵÇÂǧÅBÉGÉìÉWÉìÇ…ÇÕÅADZÇÃílÇåvéZÇ∑ÇÈÇΩÇflÇÃ
2 ǬÇÃÉ^ÉOïœêî (kQATag_ZMinScale Ç®ÇÊÇ—
kQATag_ZMinOffset ) Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅB
invW ÇÃílÇÕ 1/w
Ç≈Ç∑ÅBw ÇÕâìãflñ@ (perspective viewing)
Ç≈égópÇ≥ÇÍÇÈï‚ê≥àˆéq (correction factor) Ç≈Ç∑ÅBRAVE Ç≈ÇÕí èÌ
invW ÇÕ 1/z
Ç…íPèÉâªÇ≈Ç´Ç‹Ç∑ÅBǵǩǵÅAÉqÉUÅ[ïΩñ Ç z=0
Ç…íuÇ≠ÇΔǪǧÇÕÇ≈Ç´Ç‹ÇπÇÒÅBÉqÉUÅ[ïΩñ Ç™ 0
ÇÊÇËè≠ǵëÂÇ´Ç¢à íuDždžÇÍÇŒÅAZ
ÉoÉbÉtÉ@ÇÃílàÊÇÇÌÇ∏ǩDžé∏Ç§ÇæÇØÇ≈ 1/z
Ç™égópÇ≈Ç´ÇÈÇΩÇflÅAâΩLJñ‚ëËÇÕdžÇËÇ‹ÇπÇÒÅBÇ≈Ç»ÇØÇÍÇŒÅAZ ílÇ 0
ÇΔ 1 ÇÃä‘Ç…í≤êÆÇ∑ÇÈëOÇ… invW
ÇåvéZÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
âìãflñ@ï‚ê≥çœÇ›ÇÃÉeÉNÉXÉ`ÉÉÉ}ÉbÉsÉìÉOÇçsǧÇΩÇflÇ…ÇÕÅAÉeÉNÉXÉ`ÉÉç¿ïW
U Ç®ÇÊÇ— V Ç… invW
Çä|ÇØÇÈïKóvǙdžÇËÇ‹Ç∑ÅB(u,v) ç¿ïWÇÕ
(0,0)
Ç™ÉeÉNÉXÉ`ÉÉÉ}ÉbÉvÇÃç∂â∫äpÇ…Ç»ÇËÇ‹Ç∑ÅB
DZÇÃëºÅAì¡éÍÇ»ÉeÉNÉXÉ`ÉÉÉäÉìÉOÉÇÅ[ÉhÇïKóvÇΔÇ∑ÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÉJÉâÅ[ílÇê›íËÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉAÉbÉvÉãÇÃ
3D ÉAÉNÉZÉâÉåÅ[É^ÇÕèÌDžDZÇÃÇÊǧǻÉÇÅ[ÉhÇé¿çsÇ∑ÇÈÇÃÇ≈
(ã÷é~ÇÕÇ≈Ç´Ç‹ÇπÇÒ)ÅAÉAÉbÉvÉãÇÃÉnÅ[ÉhÉEÉFÉAÇ…ï`âÊÇ∑ÇÈèÍçáÇÕïKÇ∏ÉÇÉWÉÖÉåÅ[ÉVÉáÉìílÇΔÉnÉCÉâÉCÉgílÇê›íËǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉeÉNÉXÉ`ÉÉÉÇÉWÉÖÉåÅ[ÉVÉáÉìÇÕÉâÉCÉeÉBÉìÉOå¯â ÇèoÇ∑ÇÃÇ…ï÷óòÇ≈Ç∑ÅBì]é å¯â
(decal effects) ÇÕÉtÉHÉMÉìÉOÇÉVÉ~ÉÖÉåÅ[ÉgÇ≈Ç´ÅAZ
ç¿ïWÇ…äÓÇ√ǢǃÉAÉãÉtÉ@ílÇëIÇ—ÅAÉeÉNÉXÉ`ÉÉÇΔÉâÉCÉeÉBÉìÉOílÇÉuÉåÉìÉhǵNjÇ∑ÅBÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈÉtÉHÉMÉìÉOÇ™àÍî ìIDžǻǡǃǢNjÇ∑ÅBRAVE
ÇÃè´óàÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕíºê⁄ÉTÉ|Å[ÉgÇ∑ÇÈó\íËÇ≈Ç∑ÅB
ä˘ë∂Çà 3D ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ RAVE
ÇåƒÇ—èoÇ∑ÇÊǧDžïœçXÇ∑ÇÈÇ…ÇÕDZÇÍÇ‹Ç≈ÇÃèÓïÒÇ≈è\ï™Ç≈ǵÇÂǧÅBÇ∑Ç≈DžDZǧǵÇΩïœçXÇçsÇ¡ÇΩÉQÅ[ÉÄÉfÉxÉçÉbÉpÇÃëΩÇ≠ÇÕÅAÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉOÇé{Ç∑éOäpå`DžǬǢǃÇÕàÍéûä‘LJdžÇÍÇŒè\ï™Ç≈ǵÇΩÅBÉeÉNÉXÉ`ÉÉÇé{Ç∑éOäpå`ÇÃèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉä«óùÇ™î∫ǧÇΩÇflÅALJǡÇΔéûä‘ǙǩǩÇËÇ‹Ç∑ÅB
RAVE Ç÷ÇÃïœä∑çÏãΔÇë¨ÇflÇÈ 1 ǬÇÃï˚ñ@ÇÕÅAÉÇÉjÉ^ÇLJǧ 1 ë‰ÇΔ
3D
ÉAÉNÉZÉâÉåÅ[É^ÉrÉfÉIÉJÅ[ÉhÇí«â¡Ç∑ÇÈDZÇΔÇ≈Ç∑ÅBÇÕÇ∂ÇflÇÕÉ\ÉtÉgÉEÉFÉAÇ…ÇÊÇÈÉåÉìÉ_ÉäÉìÉOïîï™ÇÕǪÇÃNjNjDžǵǃǮǴÅARAVE
ÉÇÉjÉ^Ç…ëŒÇµÇƒÇ‡ìØÇ∂åƒÇ—èoǵÇçsǧÇÊǧDžǵNjÇ∑ÅBDZǧÇ∑ÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉ\ÉtÉgÉEÉFÉAÇÃÉåÉìÉ_ÉäÉìÉOÇΔÉnÅ[ÉhÉEÉFÉAÇÃÉåÉìÉ_ÉäÉìÉOÇî‰ärÇ≈Ç´ÇÈÇΔǢǧÉÅÉäÉbÉgLJê∂Ç‹ÇÍÇ‹Ç∑ÅB
ç≈èIìIÇ…ÇÕÅAÉ\ÉtÉgÉEÉFÉAÉâÉXÉ^ÉâÉCÉUÇ÷ÇÃåƒÇ—èoǵÇΔ RAVE
Ç÷ÇÃåƒÇ—èoǵÇêÿÇËë÷ǶÇÁÇÍÇÈÇÊǧDžǵNjÇ∑ÅBRAVE ÇÕǩǻÇËîñÇ¢
API Ç≈Ç∑ÅBÇ≈Ç∑Ç©ÇÁÅAéËéùÇøÇÃÉ\ÉtÉgÉEÉFÉAÉâÉXÉ^ÉâÉCÉUÇ RAVE
ÉGÉìÉWÉìÇΔǵǃçÏÇËíºÇµÇƒÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃãNìÆéûÇ… RAVE
ÉGÉìÉWÉìÇΔǵǃìoò^Ç∑ÇÈÅAÇΔǢǧëŒâûLJâ¬î\Ç≈Ç∑ÅBÉnÅ[ÉhÉEÉFÉAǙǻǢèÍçáÇÕdžǻÇΩÇÃçÏê¨ÇµÇΩÉGÉìÉWÉìÇ≈ÉAÉbÉvÉãÇÃÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇíuÇ´ä∑ǶÇÈÇÌÇØÇ≈Ç∑ÅBÉAÉbÉvÉãÇÃÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇÕçÇïiéøÇÃï`âÊÇçsǢNjÇ∑Ç™ÅAÉQÅ[ÉÄÇ≈ê´î\Ç™èoÇÈÇÊǧDžÇÕÉIÉvÉeÉBÉ}ÉCÉYÇ≥ÇÍǃǢNjÇπÇÒÅB
3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃç\íz
DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅA3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇèëÇ¢ÇΩDZÇΔÇÃǻǢï˚ÇÃÇΩÇflÇ…ÅAïKóvÇΔÇ»ÇÈÇ¢Ç≠ǬǩÇÃäTîOÇΔêîéÆÇè–âÓǵNjÇ∑ÅBDZÇÃÉeÅ[É}DžǬǢǃÇÕÇΩÇ≠Ç≥ÇÒÇÃñ{Ç™èëÇ©ÇÍǃǢNjÇ∑ÅBDZÇÃÇ§ÇøÇ¢Ç≠ǬǩÇÕÅARAVE
ÇÃÉhÉLÉÖÉÅÉìÉgÇÃíÜÇΔÅADZÇà TECHNOTE ÇÃç≈å„ÇÃéQçlï∂å£Ç≈è–âÓÇ≥ÇÍǃǢNjÇ∑ÅB
Ç«ÇÒǻLJÇÃÇ≈LJï`âÊÇÕÉJÉÅÉâÇΔï\é¶ïΩñ (viewing plane)
ÇäÓèÄÇ…çsÇÌÇÍÇ‹Ç∑ÅBÉJÉÅÉâÇÕ 3D ÉèÅ[ÉãÉhì‡Ç≈džÇÈà íu
(position) ÇΔå¸Ç´ (orientation)
ÇéùǡǃǢNjÇ∑ÅBï\é¶ïΩñ ÇÕï\é¶óÃàÊ (viewed area)
ì‡ÇÃâÊñ ÇÃà íuÇé¶ÇµÇ‹Ç∑ÅBÉNÉäÉbÉsÉìÉOÇ…égǧêçë‰Åiviewing
frustumÅjÇÕï\é¶ïΩñ ÇÃé¸ÇËÇ…å`ê¨Ç≥ÇÍÇ‹Ç∑ÅBï`âÊëŒè€ÇÃÇ∑Ç◊ǃÇÃÉIÉuÉWÉFÉNÉgǙDZÇÃêçë‰Ç…ǵÇΩǙǡǃÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅB
DZÇÍÇ©ÇÁç¿ïWånÇΔé·ä±ÇÃíËã`ÇçsÇ¢ÅAìTå^ìIÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÇΩÇ«ÇÈÉåÉìÉ_ÉäÉìÉOÇÃÉpÉCÉvÉâÉCÉìÇè–âÓǵNjÇ∑ÅBDZDZÇ≈ÇÕÅAâAñ è¡ãé
(HSR = hidden surface removal) Ç‚ÉIÉuÉWÉFÉNÉgÇÃä‘à¯Ç´
(object culling)
ǻǫÅAï°éGÇ»å`éÆÇÕéÊÇËè„Ç∞Ç‹ÇπÇÒÅBǪÇÍÇê‡ñæÇ∑ÇÈÇΔ 1
ç˚ÇÃñ{DžǻǡǃǵNjǧǩÇÁÇ≈Ç∑ÅB
â‰ÅXÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕç∂éËÇäÓèÄDžǵÇΩç¿ïWånÇópǢNjÇ∑ÅBx
ÇÕç∂Ç©ÇÁâEÇ÷ÅAy ÇÕâ∫Ç©ÇÁè„Ç÷ÅAz
ÇÕâÊñ ÇÃâúÇ…å¸Ç©Ç¡ÇƒëÂÇ´Ç≠Ç»ÇËÇ‹Ç∑ÅB
ÉçÅ[ÉJÉãç¿ïW
ÉçÅ[ÉJÉãç¿ïWÇÕÅAÉÇÉfÉãÇÃïœä∑ (transform)
ëOÇÃç¿ïWÇ≈Ç∑ÅBÉÇÉfÉãÇÕå¥ì_ÇíÜêSÇ… Z
é≤ÇÃå¸Ç´Ç…îzíuǵNjÇ∑ÅB
ÉIÉuÉWÉFÉNÉgÇÕǪÇÍǺÇÍå≈óLÇÃà íuÇΔå¸Ç´ÇéùÇøÇ‹Ç∑ÅBǪÇÍÇå≥Ç…ÉçÅ[ÉJÉãç¿ïWÇ©ÇÁÉèÅ[ÉãÉhç¿ïWÇ…ïœä∑ǵNjÇ∑ÅB
ÉèÅ[ÉãÉhç¿ïW
ÉèÅ[ÉãÉhç¿ïWÇÕÅAÇ∑Ç◊ǃÇÃÉIÉuÉWÉFÉNÉgÇîzíuÇ∑ÇÈïWèÄÇÃç¿ïWånÇ≈Ç∑ÅBDZÇÍÇâÊñ Ç…ï`âÊÇ∑ÇÈÇ…ÇÕÅAäœé@ì_ÅAÉJÉÅÉâÇÃå¸Ç´ÅAï\é¶ïΩñ Ç‹Ç≈ÇÃãóó£ÇåàÇflÇ‹Ç∑ÅBï\é¶ãÈå`
(viewing rectangle)
ÇÕå¸Ç´Çï\Ç∑ÉxÉNÉgÉãÇ…ëŒÇµÇƒèÌÇ…êÇíºÇ≈džÇÈÇΔçlǶNjÇ∑ÅBDZǧÇ∑ÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃê›åvÇ™íPèÉÇ…Ç»ÇËÇ‹Ç∑ÅB
ÉJÉÅÉâç¿ïW
ÉJÉÅÉâÇÃà íuÇΔå¸Ç´Ç™ÇÌÇ©ÇÈÇΔÅAÉJÉÅÉâÇÃéãê¸Ç Z
é≤Ç…ëµÇ¶ÅAY
é≤ÇÃè„è∏ï˚å¸ÇÉJÉÅÉâÇÃè„ï˚å¸Ç…Ç∑ÇÈÇÊǧÅAäœé@ì_Çå¥ì_Ç…à⁄ìÆÇµÅAç¿ïWånÇâÒì]Ç≥ÇπÇÈïœä∑É}ÉgÉäÉNÉX
(transformation matrix)
ÇåvéZÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃç¿ïWånÇ™ìæÇÁÇÍÇÈÇΔÅAä»íPÇ… Z
é≤DžǬǢǃÇÃâìãflñ@ï‚ê≥ (z-perspective correction)
ÇçsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
å„Ç≈ÅAÇ≥ÇÁÇ…ÉJÉÅÉâÇÃïœä∑É}ÉgÉäÉNÉXÇèCê≥ǵÅAÉNÉäÉbÉsÉìÉOÇÉIÉvÉeÉBÉ}ÉCÉYǵNjÇ∑ÅBDZÇÍÇÕâÊñ ÇÃïœä∑É}ÉgÉäÉNÉXÇ…ÇÕâeãøÇó^ǶNjÇ∑Ç™ÅAç≈èIåãâ Ç…ÇÕâeãøÇµÇ‹ÇπÇÒÅB
âÊñ ç¿ïWån
é¿ç€Ç… RAVE ÉGÉìÉWÉìÇ…ìnÇ≥ÇÍÇÈç¿ïWÇ≈Ç∑ÅBx ÇΔ y
ÇÕÉsÉNÉZÉãílÇ≈ÅAz ÇÕ 0 Ç©ÇÁ 1 ÇÃä‘Ç≈Ç∑ÅB
Å@
3D
ÉåÉìÉ_ÉäÉìÉOÉpÉCÉvÉâÉCÉì
ï`âÊÇ∑ÇÈÉIÉuÉWÉFÉNÉgÇÕÇ∑Ç◊ǃâ‰ÅXÇÃÉåÉìÉ_ÉäÉìÉOÉpÉCÉvÉâÉCÉìÇí ǵNjÇ∑ÅBDZDZDžÉpÉCÉvÉâÉCÉìëSëÃÇé¶ÇµÇ‹Ç∑ÅBå„Ç…êîéÆÇå©Ç»Ç™ÇÁå¬ÅXÇÃïîï™Çå©ÇƒÇ¢Ç´Ç‹Ç∑ÅBDZDZÇ≈ÇÕèqÇ◊ǻǢïîï™
(ÉâÉCÉeÉBÉìÉOÅAÉoÉbÉNÉtÉFÉCÉVÉìÉO) ÇÕÅAéQçlï∂å£ÇÃíÜÇÃâΩç˚Ç©ÇÃñ{ÇÃíÜÇ≈êGÇÍÇÁÇÍǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇ™ì å`
(convex)
Ç≈džÇÈÇΔâºíËǵNjÇ∑ÅBì å`Ç≈ǻǢÉ|ÉäÉSÉìÇÕï°êîÇÃì å`ÇÃÉ|ÉäÉSÉìÇï¿Ç◊ǃçÏê¨Ç≈Ç´ÇÈÇ©ÇÁÇ≈Ç∑ÅB
-
ÉIÉuÉWÉFÉNÉgÇ™êçë‰ÇÃì‡ïîÇ…äÆëSÇ…ä‹Ç‹ÇÍÇÈǩǫǧǩÅAäÆëSÇ…êçë‰ÇÃäOïîDždžÇÈÇÃÇ©ÅAïîï™ìIÇ…êçë‰ÇÃì‡ïîÇΔèdÇ»ÇÈÇÃÇ©ÅAåàíËǵNjÇ∑ÅBêçë‰ÇÃäOïîÇÃÉIÉuÉWÉFÉNÉgÇÕèúäOǵNjÇ∑ÅB
- ÉIÉuÉWÉFÉNÉgÇÃïœä∑É}ÉgÉäÉNÉXÇåvéZǵÅAÉIÉuÉWÉFÉNÉgÇÉJÉÅÉâç¿ïWÇ…ïœä∑ǵNjÇ∑ÅB
- åıåπ (ÉâÉCÉeÉBÉìÉO) ÇåàíËǵNjÇ∑ (DZÇà TECHNOTE
Ç≈ÇÕêGÇÍÇ‹ÇπÇÒ)ÅB
- ó†ë§Ç™Ç±ÇøÇÁÇå¸Ç¢ÇƒÇ¢ÇÈ (ÉoÉbÉNÉtÉFÅ[ÉVÉìÉO)
É|ÉäÉSÉìÇèúäOǵNjÇ∑ (êGÇÍÇ‹ÇπÇÒ)ÅB
- ÉIÉuÉWÉFÉNÉgì‡ÇÃécÇÈÉ|ÉäÉSÉìDžǬǢǃÅAǪÇÍǺÇÍéüÇÃèàóùÇçsǢNjÇ∑ÅB
- ÉIÉuÉWÉFÉNÉgÇ™êçë‰ÇΔåÇÌÇÈèÍçáÇÕêçë‰Ç…ǬǢǃÉNÉäÉbÉvǵNjÇ∑ÅB
- É|ÉäÉSÉìÇâÊñ ç¿ïWÇ…ìäâeǵNjÇ∑ÅB
- É|ÉäÉSÉìÇï`âÊǵNjÇ∑ÅB
Å@
Å@
ì_ÇÃìäâe
É}ÉgÉäÉNÉXÇÃåvéZÇÕÇ∑Ç◊ǃè»Ç´ÅAÉJÉÅÉâãÛä‘Ç©ÇÁâÊñ ãÛä‘Ç÷ì_Çìäâe
(projection)
Ç∑ÇÈÇΔDZÇÎÇ©ÇÁÇÕÇ∂ÇflÇ‹Ç∑ÅBÉ}ÉgÉäÉNÉXÇÃåvéZÇÕëÂîºÇà 3D
ÇÃñ{Ç≈éÊÇËè„Ç∞ÇÁÇÍǃǢNjÇ∑ÅB
ÉJÉÅÉâãÛä‘Ç≈ÇÕÅAâ‰ÅXÇÃÉJÉÅÉâÇÕå¥ì_Ç…íuÇ©ÇÍÅAZ
é≤Çå©â∫ÇÎÇ∑à íuDždžÇËÇ‹Ç∑ÅBï\é¶ïΩñ ÇÕ Z
é≤ÇΔêÇíºÇ…àÍíËÇÃãóó£ (Zview) Çã≤ÇÒÇ≈íuÇ©ÇÍÇ‹Ç∑ÅBdžÇÈì_
(x0, y0, z0)
Çï\é¶ïΩñ Ç…ìäâeǵNjÇ∑ÅBǪÇÍÇ…ÇÕÅAå¥ì_Ç©ÇÁǪÇÃì_Ç‹Ç≈ìäâeÇ≥ÇÍÇΩåıê¸ÇΔï\é¶ïΩñ ÇΔÇÃåì_ÇåvéZǵNjÇ∑ÅB
DZÇÃåvéZÇÕ x ç¿ïWÇΔ y ç¿ïWDžǬǢǃÇÕìØÇ∂Ç»ÇÃÇ≈ÅADZDZÇ≈ÇÕ
x ç¿ïWÇÃåvéZÇæÇØÇé¶ÇµÇ‹Ç∑ÅB
2 ǬÇÃìØÇ∂ÇÊǧǻéOäpå`ǙdžÇËÇ‹Ç∑ÅBàÍï˚ÇÕ
(0,0,0)Å`(0,0,Z0)Å`(X0,0,Z0) ÅALJǧàÍï˚ÇÕ
(0,0,0)Å`(0,0,Zview)Å`(Xview,0,Zview)
Ç≈Ç∑ÅBóºéOäpå`ÇÕîCà”Çà 2
ï”ÇÃäÑçáÇ™ìØÇ∂Ç≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
Xview/Zview = X0/Z0
Xview DžǬǢǃÇÃìäâeÇÃåvéZéÆÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
Xview = X0 * zview / z0
Yview = Y0 * zview / z0
ï\é¶ãóó£ÇÃëIë
ï\é¶ïΩñ ÇîzíuÇ∑ÇÈê≥ämÇ»ãóó£ÇëIëÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉRÉìÉeÉLÉXÉgÇÃï\é¶ãÈå`ÇÃíÜêSÇ…
Z
é≤Ç™óàÇÈÇÊǧîzíuǵNjÇ∑ÅBêlä‘ÇÃéãñÏÇ…ó^ǶÇÈâúçsÇ´ÇëIëǵNjÇ∑ÅBéOäpå`
(0,0,0)Å`(0,0,Zview)Å`(XView, 0,ZView)
ǙdžÇÈÇΔǵǃÅAï\é¶óÃàÊÇÃîºï™ÇΔǵǃäpìxÇåvéZǵÅAǪÇÍÇ 2
î{ǵNjÇ∑ÅB
DZDZÇ≈ÇÕÅAXView ÇÉRÉìÉeÉLÉXÉgÇÃïùÇÃîºï™ (ÉsÉNÉZÉãÇ≈)
ÇΔǵNjÇ∑ÅB
tan (angle) = Xview/Zview;
angle = tan-1 (Xview/Zview);
ǵÇΩǙǡǃç≈èIìIÇ»ï\é¶äpìx (viewing angle) ÇÕDZÇà 2
î{ÅAǬNjÇË 2tan-1 (Xview/Zview) Ç≈Ç∑ÅBìØólÇ…ècÇÃéãñÏÇÕ
2tan-1 (Yview/Zview) Ç≈Ç∑ÅB
ï ÇÃï˚ñ@ÇΔǵǃÅAì¡íËÇÃéãñÏÇ©ÇÁïΩñ ÇΔå¥ì_ÇÃãóó£ÇåàíËÇ∑ÇÈï˚ñ@LJdžÇËÇ‹Ç∑ÅBìKêÿÇ»êÖïΩï\é¶äpìxÇÕÇ®ÇÊǪ
110 ìxÇ≈Ç∑ÅB
Zview = Xview/tan(horizontal_angle/2)
Ç‹ÇΩÇÕ
Zview = Yview/tan(vertical_angle/2)
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ï°êîÇÃÉRÉìÉeÉLÉXÉgÉTÉCÉYÇ≈ìÆçÏÇ∑ÇÈïKóvǙdžÇÈèÍçáÇÕÅAÇ∑Ç◊ǃÇÃÉÇÉfÉãÉfÅ[É^ÇíPàÍÇÃÉRÉìÉeÉLÉXÉgÉTÉCÉYÇ…åãÇ—ïtÇØÇƒÇµÇ‹Ç§ÇÃÇÕÉiÉìÉZÉìÉXÇ≈Ç∑ÅBDZÇÃèÍçáÅAÇÊÇËè¨Ç≥Ç¢ÉèÅ[ÉãÉhÇ≈ÉÇÉfÉãÇç\ízǵǃÅAç≈èIåãâ ÇìKêÿÇ»âÊñ âëúìxÇ…çáÇÌÇπǃägëÂǵNjÇ∑ÅB32x24
ÇÃï\é¶ÉEÉBÉìÉhÉEÇÕÅAç≈èIÇà x ílÇΔ y ílÇêÆêîî{Ç≈
512x384ÅA640x480ÅA800x600ÅA832x624ÅA1024x768
Ç…ägëÂâ¬î\Ç≈Ç∑ÅBÇ∑Ç◊ǃÇÃÉNÉäÉbÉsÉìÉOÇ‚ÉÇÉfÉãÇÃåvéZÇÕè¨Ç≥Ç¢ílÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
Å@
êçë‰Ç…çáÇÌÇπÇΩÉNÉäÉbÉsÉìÉO
éãì_êçë‰ÇÃäOïîÇ…äOÇÍÇΩÉ|ÉäÉSÉìÇÕÇ∑njǂÇ≠ä‘à¯Ç´ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBêçë‰ÇÃë§ñ ÇÃ
4
ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÕï\é¶ãÈå`ÇÃÉTÉCÉYÇΔï\é¶ïΩñ ÇÃãóó£Ç©ÇÁåvéZÇ≈Ç´Ç‹Ç∑ÅB
â‰ÅXÇÃìäâeéÆ (projection formula) Ç…ÇÕ z
Ç…ÇÊÇÈèúéZÇ™ä‹Ç‹ÇÍÇÈÇÃÇ≈ÅAz<=0
ÇΔÇ»ÇÈì_Ç™ìäâeÇ≥ÇÍǻǢÇÊÇ§Ç…ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÍÇÕÉqÉUÅ[ïΩñ
(z=hither)
ÇéwíËÇ∑ÇÈDZÇΔÇ≈çsǢNjÇ∑ÅBìØólÇ…ÅAÉàÉìÉNÉäÉbÉsÉìÉOïΩñ
(z=yon)
ÇéwíËǵǃÅAÉJÉÅÉâÇ©ÇÁîÒèÌÇ…âìÇ¢ãóó£Ç…džÇÈÉIÉuÉWÉFÉNÉgLJèúäOǵNjÇ∑ÅB
6
ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇíËã`Ç∑ÇÈëOÇ…ÅAǪLJǪLJì_ÅAê¸ÅAì å`ÇÃÉ|ÉäÉSÉìÇ
3D
ïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈï˚ñ@ÇèqÇ◊Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBí èÌîCà”ÇÃïΩñ ÇÕéüÇÃï˚íˆéÆÇ≈ï\ǵNjÇ∑ÅB
Ax + By + Cz - D = 0
(A,B,C) Ç™ñ@ê¸ÉxÉNÉgÉã (plane's normal)
ÇΔÇ»ÇËÇ‹Ç∑ÅB(A,B,C) Ç™íPà ÉxÉNÉgÉãÇæÇΔÅAD
ÇÕå¥ì_Ç©ÇÁïΩñ Ç‹Ç≈ÇÃãóó£Ç…Ç»ÇËÇ‹Ç∑ÅB
îCà”Çà 3D ïΩñ Ç≈ì_ÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@
ñ@ê¸ÉxÉNÉgÉã (N) ÇΔïΩñ è„ÇÃì_ P0 ǙdžÇÈÇΔǵNjÇ∑ÅB
ñ@ê¸ÉxÉNÉgÉã: N = Ai + Bj + Ck
ì_: P0 = (X0,Y0,Z0)
ǪÇÃïΩñ è„ÇÃëÊ 2 ÇÃîCà”ÇÃì_ P ÇëIÇ—ÅAP0 Ç©ÇÁ P Ç÷ê¸ï™ L
Çà¯Ç´Ç‹Ç∑ÅB
P = (X,Y,Z)
L = (X-X0)i + (Y-Y0)j + (Z-Z0)k
N ÇÕïΩñ è„ÇÃÇ«ÇÃê¸ÇΔLJêÇíºÇ≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢNjÇ∑ÅB2
ǬÇÃÉxÉNÉgÉãÇÃÉhÉbÉgêœ (dot product = ÅE) ÇÕ 0
Ç…Ç»ÇËÇ‹Ç∑ÅB
LÅEN = 0
A(X-X0) + B(Y-Y0) + C(Z-Z0) = 0
AX + BY + CZ = AX0 + BY0 + CZ0
PÅEN = P0ÅEN
ïΩñ è„ÇÃîCà”ÇÃì_ÇΔñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇÕÇ∑Ç◊ǃìØÇ∂Ç≈ÅAãóó£
D Ç…Ç»ÇËÇ‹Ç∑ÅB
džÇÈì_DžǬǢǃÅAǪÇÃì_ÇΔñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈÇΔÅAǪÇÃñ@ê¸ÉxÉNÉgÉãÇ…âàÇ¡ÇΩãóó£Ç™ìæÇÁÇÍÇ‹Ç∑ÅBǪÇÃãóó£Ç™
D
ÇÊÇËëÂÇ´Ç¢ÇΔÅAǪÇÃì_ÇÕïΩñ ÇÃì‡ïîDždžÇËÅAÉNÉäÉbÉvÇ≥ÇÍÇ‹ÇπÇÒÅBãtÇ…è¨Ç≥Ç¢ÇΔÅAǪÇÃì_ÇÕïΩñ ÇÃäOë§Ç…džÇËÅAÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅB1
ǬÇÃì_ÇÃÉNÉäÉbÉsÉìÉOÇ…ÇÕÅA1 âÒÇÃÉhÉbÉgêœÇΔ 1
âÒÇÃî‰ärÇ™ïKóvÇ≈Ç∑ÅB
îCà”Çà 3D ïΩñ Ç≈ê¸ÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@
ê¸ï™ÇÃÉNÉäÉbÉsÉìÉOLJìØíˆìxÇ…ä»íPÇ≈Ç∑ÅBê¸ï™ÇÃóºí[ÇÃì_ÇÃãóó£ÇåvéZǵNjÇ∑ÅBóºï˚ÇΔLJïΩñ ÇÃì‡ïîDždžÇÍÇŒÅAê¸ï™ëSëÃÇ™ïΩñ ÇÃì‡ïîDždžÇÈDZÇΔÇ…Ç»ÇËÅAÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇ‹ÇπÇÒÅBóºï˚ÇÃì_Ç™ïΩñ ÇÃäOë§Ç…džÇÈèÍçáÇÕÅAê¸ï™ëSëÃÇ™ÉNÉäÉbÉvÇ≥ÇÍÇ‹Ç∑ÅBì_Ç™ïΩñ ÇÃì‡ÇΔäODždžÇÈèÍçáÇÕÅAê¸ï™ÇΔÉNÉäÉbÉsÉìÉOïΩñ ÇΔÇÃåì_ÇãÅÇflÅAïΩñ ÇÃäOë§Ç…džÇÈïîï™ÇÉNÉäÉbÉvǵNjÇ∑ÅB
ÉNÉäÉbÉsÉìÉOïΩñ è„ÇÃì_ÇÃÉhÉbÉgêœÇÕ D
Ç≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢNjÇ∑ÅBP1 (X1,Y1,Z1) Ç©ÇÁ
P2 (X2,Y2,Z2) Ç÷éäÇÈê¸ï™ÇÃÉpÉâÉÅÅ[É^ï˚íˆéÆ
(parametric equation) ÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅBDZDZÇ≈ÅAt Ç™ 0 Ç©ÇÁ
1 Ç…ïœâªÇ∑ÇÈDžǬÇÍǃì_ P ÇÕ P1 Ç©ÇÁ P2 Ç÷ÇΔïœâªÇµÇ‹Ç∑ÅB
P = P1 + t(P2-P1)
PÅEN = D ÇΔÇ»ÇÈ t
ÇÃílÇÕéüÇÃÇÊǧDžǵǃãÅÇflÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
- PÅEN = D
- (P1 + t(P2-P1)ÅEN = D
- P1ÅEN + t(P2ÅEN - P1ÅEN) = D
- Å@
- D1 = P1ÅEN
- D2 = P2ÅEN
- Å@
- D1 + t(D2-D1) = D
- Å@
- Å@Å@(D-D1)
- t = -------
- Å@Å@(D2-D1)
D1 ÇΔ D2
ÇÕÇ∑Ç≈Ç…ÉNÉäÉbÉvÇ∑ÇÈê¸ï™Ç…ǬǢǃãÅÇflÇΩÉhÉbÉgêœÇ≈Ç∑ÅBD
ÇÕïΩñ DžǬǢǃÇ∑Ç≈Ç…ãÅÇflÇÁÇÍǃǢNjÇ∑ÅBDZǧǵǃãÅÇflÇΩ T
Çè„ãLÇÃÉpÉâÉÅÅ[É^ï˚íˆéÆÇ…ë„ì¸ÇµÇƒ P
ílÇãÅÇflǃÇ≠ÇæÇ≥Ç¢ÅB
îCà”Çà 3D
ïΩñ Ç≈ì å`ÇÃÉ|ÉäÉSÉìÇÉNÉäÉbÉvÇ∑ÇÈï˚ñ@
ì å`ÇÃÉ|ÉäÉSÉìÇïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈÇ…ÇÕÅAäeï”DžǬǢǃèáÇ…ïΩñ Ç…ëŒÇµÇƒÉNÉäÉbÉsÉìÉOÇÃåüç∏ÇǵNjÇ∑ÅBDZÇÃåãâ êVǵǢì å`ÇÃÉ|ÉäÉSÉìÇ™ìæÇÁÇÍÇ‹Ç∑ÅBDZÇÃèàóùÇ≈í∏ì_Ç™ëùǶÇÈDZÇΔLJå∏ÇÈDZÇΔLJdžÇËÇ‹Ç∑
(ó·äOÇÕÉ|ÉäÉSÉìÇ™äÆëSÇ…èúäOÇ≥ÇÍÇÈèÍçáÇ≈Ç∑)ÅB
ä»íPÇ»ÉAÉãÉSÉäÉYÉÄÇΔǵǃÅAÉ|ÉäÉSÉìÇÃäeí∏ì_ÇèáÇ…í≤Ç◊ÇÈï˚ñ@ǙdžÇËÇ‹Ç∑ÅBǪÇÍǺÇÍ
2
ǬÇÃí∏ì_DžǬǢǃÅAç≈èâÇÃì_Ç™ïΩñ ì‡Ç…é˚Ç‹ÇÈÇΔÇ´ÇÕÅAǪÇÍÇèoóÕǵNjÇ∑ÅB2
ǬÇÃì_Ç™ïΩñ ÇÇÕÇ≥ÇÒÇ≈ï ÇÃë§Ç…džÇÈèÍçáÇÕåì_ÇèoóÕǵNjÇ∑ÅB
Å@
ÉNÉäÉbÉsÉìÉOÇ…égǧêçë‰
ïΩñ Ç…ëŒÇµÇƒÉ|ÉäÉSÉìÇÉNÉäÉbÉsÉìÉOÇ∑ÇÈï˚ñ@Ç™ÇÌÇ©ÇËNjǵÇΩÅBÉNÉäÉbÉsÉìÉOÇ…ópÇ¢ÇÈêçë‰ÇÃäeñ ÇÃï˚íˆéÆÇåvéZÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBà»ëOÇÃÇΔÇ®ÇËÅAéãì_ÇÕå¥ì_DždžÇËÅAï\é¶ãÈå`ÇÕàÍíËÇÃãóó£ÅAZview
DždžÇËÇ‹Ç∑ÅB
- Xview = view_width/2
- Yview = view_height/2
- Zview = view_plane_distance
É|ÉäÉSÉìÇïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈï˚ñ@Ç™ÇÌǩǡÇΩÇΔDZÇÎÇ≈ÅAÉNÉäÉbÉsÉìÉOÇ…ópÇ¢ÇÈêçë‰ÇÃäeñ ÇÃï˚íˆéÆÇåvéZǵNjÇ∑ÅBéãì_ÇÕå¥ì_Ç…ÅAï\é¶ãÈå`ÇÕ
(0,0,distance)
ÇíÜêSDžǵÇΩà íuDždžÇËÇ‹Ç∑ÅBÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ ÇÃãóó£Ç‡ïKóvÇ≈Ç∑ÅB
DZDZÇ≈ 6
ǬÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇåvéZǵNjÇ∑ÅBÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ Ç™àÍî‘ä»íPÇ≈Ç∑ÅBÇ¢Ç∏ÇÍLJ
Z é≤Ç…êÇíºÇæÇ©ÇÁÇ≈Ç∑ÅB
ÉqÉUÅ[ïΩñ ÇΔÉàÉìïΩñ ÇåvéZÇ∑ÇÈÇÃÇ™ç≈LJä»íPÇ≈Ç∑ÅB
- ÉqÉUÅ[ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (0,0,1)ÅAãóó£ =
hither
- ÉàÉìïΩñ : ñ@ê¸ÉxÉNÉgÉã = (0,0,-1)ÅAãóó£ = -yon
écÇËÇÃ 4
ǬÇÃïΩñ ÇÕÇ∑Ç◊ǃå¥ì_Çí ÇËÇ‹Ç∑ÅBǵÇΩǙǡǃèÌÇ…ãóó£ÇÕ 0
Ç≈Ç∑ÅBêÖïΩÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÕÅAå¥ì_Ç©ÇÁ (X0,0,Z0) ÇΔ
(-X0,0,Z0)
Ç÷éäÇÈê¸ï™ÇΔêÇíºÇ»ñ@ê¸ÉxÉNÉgÉãÇëIÇÒÇ≈ãÅÇflÇ‹Ç∑ÅB
- X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (-Z0,0,X0)ÅAãóó£ = 0
- X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (Z0, 0,X0)ÅAãóó£ = 0
Y ç¿ïWLJìØólÇÃï˚ñ@Ç≈ãÅÇflÇ‹Ç∑ÅB
à”ñ°ÇÃdžÇÈãóó£Ç≈džÇÈÇΩÇflÇ…ÇÕÅADZÇÍÇÁÇÃñ@ê¸ÉxÉNÉgÉãÇÕÇ∑Ç◊ǃí∑Ç≥
1.0 Ç…ê≥ãKâªÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
ÉqÉUÅ[ílÇΔÉàÉìílÇëIÇ‘
ÉqÉUÅ[ílÇÕÉJÉÅÉâÇÃëOÇ…åªÇÍÇÈç≈LJãflÇ¢ÉIÉuÉWÉFÉNÉgÇÃãóó£ÇÊÇËè¨Ç≥Ç≠Ç»Ç≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅBäÓñ{ìIÇ…ÇÕÅAínå`
(terrain)
Ç‚ÉIÉuÉWÉFÉNÉgǙDZÇÃãóó£ÇÊÇËéËëOÇ…óàǻǢÇÊǧè’ìÀåüím
(collision detection)
ÇǵǻÇ≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅBǪǧǻǡǃǢǻǢÇΔÇ∑ÇÍÇŒÅAä‘à·Ç¡ÇƒÅAäœé@é“Ç™ÉIÉuÉWÉFÉNÉgÇÃì‡ïîÇ…Ç¢ÇÈÇ©ÅAínñ ÇÃì‡ïîÇìßǩǵǃå©ÇƒÇ¢ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÍÇÕ
3D ÉQÅ[ÉÄÇ≈ÇÊÇ≠džÇÈÉoÉOÇ≈Ç∑ÅB
ÉàÉìïΩñ Ç…ÇÊǡǃó\ä˙ÇπÇ å¯â Ç™ê∂Ç‹ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBâÊñ ÇÃí[Ç…å©Ç¶ÇƒÇ¢ÇÈínå`ÇíÜâõÇ…äÒÇπÇÈ
(Z ïΩñ Çâ°êÿÇÈ)
ÇΔè¡Ç¶ÇƒÇµÇ‹Ç§ÇΔÇ©ÅAdžǻÇΩÇ™ÉIÉuÉWÉFÉNÉgÇÃï˚Çå¸Ç≠ÇΔè¡Ç¶ÇƒÇµÇ‹Ç§Ç»Ç«Ç≈Ç∑ÅBÉàÉìílÇëÂÇ´Ç≠ǵÅAëºÇÃå¯â
(ÉtÉHÉMÉìÉO)
Çâ¡Ç¶ÇÈÇΔÅAÉIÉuÉWÉFÉNÉgÇÕÇÊÇËÉXÉÄÅ[ÉYÇ…åªÇÍÇÈÇÊǧDžǻÇËÅAÉàÉìïΩñ Çâ°êÿÇÈç€Ç…ÉIÉuÉWÉFÉNÉgÇ™ìÀëRÉpÉbÇΔåªÇÍÇÈÇÃÇîÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
Å@
ÉNÉäÉbÉsÉìÉOÇÃÉIÉvÉeÉBÉ}ÉCÉY
ÉNÉäÉbÉsÉìÉOÇÕÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇ…ëŒÇµÇƒçsǧëÄçÏÇ»ÇÃÇ≈ÅAâ¬î\Ç»å¿ÇËçÇë¨Ç≈Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBóùëzìIÇ…ÇÕÅAÉIÉuÉWÉFÉNÉgÇ≤ÇΔÇ…çsǧåvéZÇç≈è¨Ç…ǵǃÅAâ¬î\Ç»å¿ÇËëÅÇ¢éûì_Ç≈èúäOÇ≈Ç´ÇÈLJÇÃÇÕèúäOǵNjÇ∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAì¡Ç…ÉIÉuÉWÉFÉNÉgÇÃÉNÉäÉbÉsÉìÉOÇéÊÇËè„Ç∞Ç‹Ç∑ÅBínñ ǻǫëºÇÃLJÇÃÇÕÅABSP
ÉcÉäÅ[ǻǫëºÇÃÉAÉãÉSÉäÉYÉÄÇ…ÇÊÇÈåvéZÇÃǟǧǙå¯ó¶ÇÊÇ≠ÉNÉäÉbÉvÇ≈Ç´ÇÈǩLJǵÇÍÇ‹ÇπÇÒÅB
ÉqÉUÅ[ïΩñ ÇÃÉIÉvÉeÉBÉ}ÉCÉY
âÊñ ÇÃí[ÇÃãflÇ≠Ç≈ÇÕäÙï™ãflÇ≠Ç≈ÉNÉäÉbÉvǵǃLJǩNjÇÌǻǢèÍçáÇÕÅAÉqÉUÅ[ïΩñ Ç…ÇÊÇÈÉNÉäÉbÉsÉìÉOÇè»Ç´ÅA4
ǬÇà x Ç®ÇÊÇ— y ÉNÉäÉbÉsÉìÉOïΩñ ÇÃè≈ì_Çå¥ì_Ç©ÇÁ
(0,9,hither) Ç÷à⁄Ç∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
êçë‰Ç…ëŒÇ∑ÇÈã´äEÇΔÇ»ÇÈãÖñ ÇÃÉ`ÉFÉbÉN
ï°êîÉ|ÉäÉSÉìÇ©ÇÁç\ê¨Ç≥ÇÍÇÈîCà”ÇÃÉIÉuÉWÉFÉNÉgÇÕÅAÉIÉuÉWÉFÉNÉgëSëÃÇïÔÇfiã´äEÇΔÇ»ÇÈãÖñ
(bounding sphere)
ÇãÅÇflÅAÉIÉuÉWÉFÉNÉgëSëÃÇ≈ä‘à¯Ç´èàóùÇçsǢNjÇ∑ÅBDZÇÃãÖñ ÇÃîºåa
(radius) ÇÕå¥ì_Ç©ÇÁç≈LJâìÇ¢í∏ì_Ç‹Ç≈ÇÃãóó£Ç©ÇÁãÅÇflÇ‹Ç∑ÅB
ÉIÉuÉWÉFÉNÉgÇÃà íuÇΔâ‰ÅXÇÃïΩñ ÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈÇΔÅAãÖñ ÇÃíÜêSÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBDZÇÍÇ
Dcenter ÇΔåƒÇ—Ç‹Ç∑ÅB
LJǵ (Dcenter + radius < Dplane)
Ç™ê¨ÇËóßǃnjÅAãÖñ ëSëÃÇ™ïΩñ ÇÃäOë§Ç…džÇÈÇÃÇ≈ÅADZÇÍà»è„åvéZÇÕçsÇÌÇ∏ÉIÉuÉWÉFÉNÉgëSëÃÇèúäOÇ≈Ç´Ç‹Ç∑ÅB
LJǵ (Dcenter - radius > Dplane)
ÇæÇΔÅAãÖñ ëSëÃǙDZÇÃÉNÉäÉbÉsÉìÉOïΩñ ÇÃì‡ïîDždžÇËÇ‹Ç∑ÅBÉIÉuÉWÉFÉNÉgì‡ÇÃÉ|ÉäÉSÉìÇÕÇ«ÇÍLJïΩñ ÇΔåÇÌÇÈDZÇΔÇÕǻǢÇΩÇflÅADZÇÃÉIÉuÉWÉFÉNÉgÇÃÉtÉâÉOÇÉZÉbÉgǵǃÅAà»ç~ÇÃÉpÉCÉvÉâÉCÉìÇ≈ÅAèàóùó ÇÃëΩÇ¢É|ÉäÉSÉìÉåÉxÉãÇÃÉNÉäÉbÉsÉìÉOÇñ≥ë Ç…çsÇÌǻǢÇÊǧDžǵNjÇ∑ÅB
DZÇÍÇ…ÇÕêçë‰Çïœä∑ǵǃÉèÅ[ÉãÉhç¿ïWÇ…ñflÇ∑ÇÃÇ™àÍî‘ÇÊÇ¢ï˚ñ@Ç≈ǵÇÂǧÅBǪǧÇ∑ÇÍÇŒÅAïœä∑É}ÉgÉäÉNÉXÇåvéZÇπÇ∏Ç…ÉIÉuÉWÉFÉNÉgÇÃà íuÇíºê⁄ëÄçÏÇ≈Ç´Ç‹Ç∑ÅBãtïœä∑ÇÕÉJÉÅÉâÇ™à⁄ìÆÇµÇΩèÍçáDžǵǩåvéZÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅB
DZÇÃåvéZÇ…ÇÕÇΩÇ©ÇæÇ© 6
âÒÇÃÉhÉbÉgêœÇµÇ©ïKóvdžÇËÇ‹ÇπÇÒÅBDZÇÍÇæÇØÇ≈ÅAÉpÉCÉvÉâÉCÉìÇ≈àµÇ§ÉIÉuÉWÉFÉNÉgÇÃå¬êîÇ™å∏ÇËÅAïKóvÇ»É|ÉäÉSÉìÇÃÉNÉäÉbÉsÉìÉOÇÃâÒêîLJëÂïùÇ…å∏ÇËÇ‹Ç∑ÅBǵǩǵÉIÉuÉWÉFÉNÉgÇÃÇŸÇΔÇÒǫǙêçë‰ÇΔåÇÌÇÈèÍçáÇÕÅADZÇÃÉeÉNÉjÉbÉNÇÕê´î\ÇóéÇΔǵNjÇ∑ÅB
ÉNÉäÉbÉsÉìÉOópêçë‰Çê≥ãKâªÇ∑ÇÈ
äeÉ|ÉäÉSÉìÇÃÉNÉäÉbÉsÉìÉODžǮǢǃÅAäeí∏ì_ÇäeÉNÉäÉbÉvïΩñ Ç≈ÉNÉäÉbÉsÉìÉOÇ∑ÇÈÇΩÇflÇ…
1
âÒÇÃÉhÉbÉgêœÇ™ïKóvÇ≈Ç∑ÅBó·Ç¶ÇŒÅAé¿ç€Ç…ÇÕÉNÉäÉbÉsÉìÉOÇ™ãNDZÇÁǻǢèÍçáÇ≈LJÅA5
ǬÇÃí∏ì_Ç 6 ǬÇÃïΩñ Ç≈ÉNÉäÉbÉvÇ∑ÇÈÇΔÅA30
âÒÇÃÉhÉbÉgêœÅAǬNjÇË 90 âÒÇÃèÊéZÇΔ 60
âÒÇÃâ¡éZÇ™ïKóvÇ≈Ç∑ÅBñæÇÁǩDžÅAÇ«ÇÒÇ»ë¨Ç¢É}ÉVÉìÇ≈džǡǃLJÅADZÇÃâÒêîÇå∏ÇÁÇ∑DZÇΔÇ™ìæçÙÇ≈ǵÇÂǧÅB
êÖïΩÇ®ÇÊÇ—êÇíºÇÃÉNÉäÉbÉsÉìÉOïΩñ Ç™ 45
ìxÇÃäpìxDžǻǡǃǢÇÈèÍçáÅAÉhÉbÉgêœÇÃåvéZÇÕÅA1 âÒÇÃâ¡éZÇæÇØ
(èÊéZÇÕǻǵ)
Ç≈çœÇ›Ç‹Ç∑ÅBïΩñ ÇÃï˚íˆéÆÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
- X ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (-1,0,1)ÅAãóó£ = 0
- Y ïΩñ : ñ@ê¸ÉxÉNÉgÉã = (1, 0,1)ÅAãóó£ = 0
(ñ@ê¸ÉxÉNÉgÉãÇÕíPà ÉxÉNÉgÉãÇ…ê≥ãKâªÇ≥ÇÍÇ‹Ç∑ÅB)
ì_ P ÇΔç≈èâÇÃñ@ê¸ÉxÉNÉgÉãÇΔÇÃÉhÉbÉgêœÇãÅÇflÇÈèÍçáÅAãóó£ÇÕ
-Xp + Zp
Ç≈Ç∑ÅBî‰ärÇÕâ¡éZǻǵÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBLJǵ (Xp
> Zp)
Ç™ê¨ÇËóßǃnjÅAì_ÇÕÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇ‹Ç∑ÅBê¸ï™Ç™ÉNÉäÉbÉsÉìÉOÇ≥ÇÍÇÈDZÇΔÇ™ÇÌÇ©ÇÍÇŒÅAêîâÒÇÃâ¡éZÇΔ
1 âÒÇÃèúéZÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
ä˘ë∂ÇÃÉJÉÅÉâÉ}ÉgÉäÉNÉXÇ…Ç≥ÇÁÇ…ÅAX Ç®ÇÊÇ— Y ïΩñ Ç 45
ìxÇ…îzíuÇ∑ÇÈÉXÉPÅ[ÉäÉìÉOÉ}ÉgÉäÉNÉXÇìKópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBìØéûÇ…ÅAZ
ç¿ïWïœä∑Çé{ǵǃ Z ílÇ 0 Ç©ÇÁ 1
ÇÃä‘Ç…Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
(Sx,Sy,Sz) = (Z0/Zyon * X0, z0/Zyon*Y0,
1/Zyon).
ì_Ç™âÊñ ãÛä‘Ç…ìäâeÇ≥ÇÍÇÈèÍçáÅAãtïœä∑Çé{ǵǃÅAX Ç®ÇÊÇ— Y
ç¿ïWÇê≥ǵǢílÇ…ÉXÉPÅ[ÉäÉìÉOÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
(Sx,Sy,Sz) = (x0/z0, y0/z0, 1)
DZÇÃïœä∑ÇÕåãâ Ç RAVE
ç¿ïWÇ…ìäâeÇ∑ÇÈêîéÆÇÃíÜÇ≈çsǧDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉXÉPÅ[Éãå„ÇÃÉJÉÅÉâãÛä‘ì‡ÇÃ
(Xc, Yc, zc) DžǬǢǃÇÕÅAç≈èIÇÃìäâeï˚íˆéÆ (projection
equation) ÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅB
- InvW = 1/Zc;
- Xp = Xc * X0 * invW;
- Yp = Yc * Y0 * invW;
- Zp = z
- U/W = u * invW;
- V/W = v * invW;
z ÇÃåªç›ÇÃÉXÉPÅ[ÉãílÇ≈ÇÕÉàÉìïΩñ Ç™ z=1.0
Ç…à íuǵNjÇ∑ÅBèúéZÇ≈ǪÇÍÇÊÇËǂǂëÂÇ´Ç¢ílÇégǶnjÅAÇ∑Ç◊ǃÇà z
ílÇ™égópâ¬î\Ç» Z ÉoÉbÉtÉ@ãÛä‘ì‡Ç…é˚Ç‹ÇËÇ‹Ç∑ÅB
Å@
ÉeÉNÉXÉ`ÉÉä«óù
RAVE
ÇÕç≈í·å¿ÇÃÉeÉNÉXÉ`ÉÉä«óùǵǩçsǢNjÇπÇÒÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉtÉâÉO
(kQATexture_Lock )
ÇéwíËÇ∑ÇÈDZÇΔÇ≈ÅAÉGÉìÉWÉìÇ…ëŒÇµÇƒÅAǪÇÃÉeÉNÉXÉ`ÉÉÇÉIÉìÉ{Å[Éh
VRAM
Ç…âiãvï€ë∂Ç∑ÇÈDZÇΔÇéwé¶Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÍÇÕèÌéûégópÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇ…ÇÃÇ›éwíËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉXÉèÉbÉvÇ≈ǴǻǢÉeÉNÉXÉ`ÉÉÇÃå¬êîÇ™ëΩÇ¢ÇΔëºÇÃÉeÉNÉXÉ`ÉÉÇï€ë∂Ç∑ÇÈÇΩÇflÇÃÉÅÉÇÉäÇ™ë´ÇËÇ»Ç≠Ç»ÇÈÇ©ÇÁÇ≈Ç∑ÅB
Ç«ÇÒÇ»èÍçáÇ≈LJÅAÉGÉìÉWÉìÇÕÇ«ÇÃÇÊǧǻÉeÉNÉXÉ`ÉÉÇ≈džÇÍí èÌÇÃÉÅÉÇÉäÇ…ï€éùǵǃǮǴÅAï`âÊÇ≈ïKóvDžǻǡÇΩéûÇæÇØ
VRAM
Ç…ÉRÉsÅ[Ç∑ÇÈÅAÇΔǢǧï˚ñ@ÇëIǑDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZǧÇ∑ÇÍÇŒÅAÉGÉìÉWÉìÇÕÅAdžÇÈéûì_Ç≈
VRAM
Ç…î[Ç‹ÇÁǻǢǩÇÁÇΔǢǡǃÉeÉNÉXÉ`ÉÉÇÃçÏê¨Çãëî€ÇπÇ∏Ç…çœÇ›Ç‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕïKóvÇ»ÉeÉNÉXÉ`ÉÉÇämé¿Ç…
RAVE
ÉGÉìÉWÉìÇ…ÉçÅ[ÉhÇ∑ÇÈÇÊÇ§Ç…ÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBDZÇÃïîï™Ç™ÅA3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ RAVE
ÇåƒÇ—èoÇ∑ÇÊǧDžïœçXÇ∑ÇÈÇΩÇflÇ…ïKóvÇ»ÉRÅ[ÉhÇÃàÍî‘ëΩÇ¢â”èäÇ≈Ç∑ÅB
Ç‹Ç∏ÅAóùëzìIÇ»èÛãµÇ…Ç®ÇØÇÈÉeÉNÉXÉ`ÉÉä«óùÇ©ÇÁÇÕÇ∂ÇflÇ‹Ç∑ÅBǬǢÇ≈ǪÇÍÇ≈ÇÕë´ÇËǻǢïîï™Çï‚ǢNjÇ∑ÅBǪÇÍÇ©ÇÁÅAÉeÉNÉXÉ`ÉÉä«óùÇÃâ¸ëPÇÃÇΩÇflÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔÉGÉìÉWÉìǙǵÇΩǙǧÇ◊Ç´éñïøÇíÒé¶ÇµÇ‹Ç∑ÅB
RAVE ÉGÉìÉWÉìÇÃÅuóùëzìIÅvÇ»ÉeÉNÉXÉ`ÉÉä«óù
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÇ‹Ç∑
(QATextureNew )ÅBïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÃèWçáÇÕÉVÉXÉeÉÄÇ≈óòópâ¬î\Ç»
VRAM
ÇÃëçó ÇâzǶNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAdžÇÈÉeÉNÉXÉ`ÉÉÇÃê›íË
(QASetPtr )ÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìåQÇÃëóèoÇåJÇËï‘ǵǃÅAÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìÇï`âÊǵNjÇ∑ÅB1
å¬ÇÃÉVÅ[ÉìÇÃï`âÊÇ≈ìØÇ∂ÉeÉNÉXÉ`ÉÉÇï°êîâÒê›íËǵǃLJǩNjǢNjÇπÇÒÅBégópçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇÕçÌèúǵNjÇ∑
(QATextureDelete )ÅBÇ∑Ç≈Ç…ëóèoçœÇ›ÇÃéOäpå`ÇÕÅAǪÇÍÇ™égópÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍǃLJê≥ǵÇ≠ï`âÊÇ≥ÇÍÇ‹Ç∑ÅB
ÉAÉjÉÅÅ[ÉVÉáÉìÇÃäeÉtÉåÅ[ÉÄÇ≤ÇΔÇ…êVǵǢÉeÉNÉXÉ`ÉÉÇ™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBÉGÉìÉWÉìÇ™å¯ó¶ÇÊÇ≠ÉeÉNÉXÉ`ÉÉÇçÏê¨Ç≈Ç´ÇÈÇÊǧÅAÉAÉjÉÅÅ[ÉVÉáÉìÉeÉNÉXÉ`ÉÉÇ‚ÅAÉeÉNÉXÉ`ÉÉÉfÅ[É^ÇÉâÉCÉgÉ}ÉbÉvÇΔëgÇ›çáÇÌÇπÇΩÉeÉNÉXÉ`ÉÉÇ™çÏê¨Ç≈Ç´Ç‹Ç∑ÅB
óùëzìIÇ»ÉGÉìÉWÉìÇ≈džÇÍÇŒÅAÉNÉâÉbÉVÉÖǵÇΩÇËÅAîjä¸ÇµÇƒÇµÇ‹Ç¡ÇΩÉeÉNÉXÉ`ÉÉÇä‘à·Ç¶ÇƒégÇ¡ÇΩÇËÇπÇ∏Ç…ÅAÉVÅ[ÉìÇê≥ämÇ…ï`âÊÇ≈Ç´Ç‹Ç∑ÅBÇ‚ÇΩÇÁíxÇ≠ǻǡÇΩÇËÇπÇ∏Ç…ÅAÉGÉìÉWÉìÇÕÉeÉNÉXÉ`ÉÉÇÃçÏê¨ÇΔçÌèúÇå¯ó¶ÇÊÇ≠çsǢNjÇ∑ÅB
åªé¿ÇΔÇÃëŒâû
è„Ç≈èqÇ◊ÇΩÇÊǧǻóùëzìIÇ»ÉGÉìÉWÉìÇ…ãflǢLJÇÃÇçÏê¨Ç∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑Ç™ÅAÉGÉìÉWÉìÇÕí èÌÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇΔÉAÉìÉçÅ[ÉhÇìKêÿÇ…ÉXÉPÉWÉÖÅ[ÉãÇ≈Ç´ÇÈèÓïÒÇéùǡǃǢNjÇπÇÒÅB
ÉGÉìÉWÉìÇÕ VRAM
Ç…î[Ç‹ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉèWçáÇÃçÏê¨ÇãñÇ∑LJÇÃÇΔǵNjÇ∑ÅBDZÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇ
1 Ǭ 1
ǬêÿÇËë÷ǶǃǢÇ≠ÇΔÅAÉGÉìÉWÉìÇÕì¡íËÇÃÉ|ÉäÉSÉìÇÃï`âÊÇå„âÒǵDžÇ∑ÇÈÇ©ÅAǪÇÍÇΔLJïKóvÇ»ÉeÉNÉXÉ`ÉÉÇ
VRAM
Ç…ÉRÉsÅ[Ç∑ÇÈÇ©ÅAÇ¢Ç∏ÇÍÇ©ÇÃï˚ñ@ÇÇΔÇËÇ‹Ç∑ÅBdžÇÈèÍçáÇÕÅAìØÇ∂ÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìǙLJǡÇΔÉoÉbÉtÉ@ÉäÉìÉOÇ≥ÇÍÇÈDZÇΔÇä˙ë“ǵǃÅAǢǡÇ≥Ç¢ï`âÊÇçsÇÌǻǢÅAÇΔǢǧDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBï ÇÃèÍçáÇÕÅAÉGÉìÉWÉìÇÕÇ∑ÇÆÇ…ï`âÊÇçsǢNjÇ∑Ç™ÅAÉeÉNÉXÉ`ÉÉÇ
VRAM Ç…ÉRÉsÅ[Ç∑ÇÈÇÃÇ…í∑Ç¢éûä‘ǙǩǩÇËÇ‹Ç∑ÅB
ëΩÇ≠ÇÃÉGÉìÉWÉìÇÕ VRAM
Ç…î[Ç‹ÇÁǻǢÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃÇÕã÷é~ǵNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕDZÇÃèÛãµÇÇ∑ÇÆÇ…ímÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑Ç™
(QATextureNew Ç™é∏îsÇ∑ÇÈ
)ÅAåãâ ÇΔǵǃì¡íËéûì_DžǮǢǃÇÊÇËè≠êîÇÃÉeÉNÉXÉ`ÉÉèWçáǵǩégópÇ≈Ç´Ç‹ÇπÇÒÅBó·Ç¶ÇŒÅA2
ÉÅÉKÉoÉCÉgÇà 3D ÉJÅ[ÉhÇ≈ÅA640x480ÅA16
ÉrÉbÉgÇÃÉtÉçÉìÉgÉoÉbÉtÉ@ÅAÉoÉbÉNÉoÉbÉtÉ@ÅAZ
ÉoÉbÉtÉ@ÇéùǬLJÇÃÇÕÅA250K ÇÃÉeÉNÉXÉ`ÉÉ VRAM
ǵǩdžÇËÇ‹ÇπÇÒÅBè¨Ç≥Ç»ÉRÉìÉeÉLÉXÉgÇäÑÇËìñǃÇΩÇËÅAZ
ÉoÉbÉtÉ@ÇégópÇµÇ»ÇØÇÍÇŒÅAVRAM
Ç™ëΩÇ≠égǶÇÈÇÊǧDžǻÇËÇ‹Ç∑Ç™ÅAǪÇÃåãâ óòópâ¬î\Ç»ÉIÉvÉVÉáÉìÇ™å∏ÇËÇ‹Ç∑ÅB
DZÇÍÇ™à”ñ°Ç∑ÇÈÇÃÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ
QATextureNew
Ç™é∏îsÇ∑ÇÈèÍçáÇ…îıǶǃÅAïsóvÇ»ÉeÉNÉXÉ`ÉÉÇçÌèúǵǃÅAïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈÉÅÉÇÉäãÛä‘ÇçÏÇÈïKóvǙdžÇÈÅAÇΔǢǧDZÇΔÇ≈Ç∑ÅBǵǩǵǻǙÇÁÅAÉGÉìÉWÉìÇÃíÜÇ…ÇÕÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégópÇ∑ÇÈÉ|ÉäÉSÉìÇ™Ç∑Ç◊ǃÉâÉXÉ^ÉâÉCÉYçœÇ›Ç©Ç«Ç§Ç©ÇÉ`ÉFÉbÉNǵǻǢÇ≈çÌèúǵǃǵNjǧLJÇÃLJdžÇËÇ‹Ç∑ÅBDZÇÃïîï™ÇÃ
RAM
ÇÕí èÌçƒégópÇ≥ÇÍÇÈÇΩÇflÅAä‘à·Ç¶ÇƒÉSÉ~Ç™ï`âÊÇ≥ÇÍǃǵNjǢNjÇ∑ÅBQASync
ÇåƒÇ—èoǵǃǪÇÍÇ‹Ç≈ÇÃï`âÊÇäÆåãÇ≥ÇπÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑Ç™ÅAǪǧÇ∑ÇÈÇΔÅAîÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇ™éùǬëΩÇ≠ÇÃóòì_ÇëπǻǧDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBÉnÅ[ÉhÉEÉFÉAÇ‚
RAVE
ÉGÉìÉWÉìÇ™îÒìØä˙ÇÃï`âÊÇëΩÇ≠çsǶnjçsǧǟǫÅAQASync
ÇÃåƒÇ—èoǵÇÕëÂÇ´Ç»ë¨ìxí·â∫ÇLJÇΩÇÁǵNjÇ∑ÅB
ÉAÉbÉvÉã 3D ÉAÉNÉZÉâÉåÅ[É^Ç≈ÇÕÅAQARenderEnd
Ç™åƒÇŒÇÍÇΩéûÇ…ÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™ VRAM
Ç…Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÉåÉìÉ_ÉäÉìÉOÉãÅ[Évì‡Ç≈ÉeÉNÉXÉ`ÉÉÇÃçÌèúÇÕÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÃÇÊǧǻèÍçáÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕdžNjÇËëΩÇ≠ÇÃëIëéàÇÕÇ»Ç≠ÅAÉGÉìÉWÉìÇ™ê≥ǵǢDZÇΔÇǵǃÇ≠ÇÍÇÈDZÇΔÇä˙ë“Ç∑ÇÈǵǩdžÇËÇ‹ÇπÇÒÅB
ÉGÉìÉWÉìÇÃÉeÉNÉXÉ`ÉÉä«óùÇÃêiÇflï˚
DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAÉGÉìÉWÉìÇ™ÉeÉNÉXÉ`ÉÉä«óùÇé¿ëïÇ∑ÇÈÇ–ÇΔǬÇÃï˚ñ@DžǬǢǃèqÇ◊Ç‹Ç∑ÅBDZÇÃï˚ñ@Ç≈ÇÕÅAÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉÇà¿ëSÇ…
VRAM
Ç…íuÇ≠DZÇΔÇ™Ç≈Ç´ÅAïsé©ëRÇ»ÉâÉXÉ^ÉâÉCÉYÇãNDZÇ≥Ç∏Ç…ÅAà¿ëSÇ…ÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
ÉGÉìÉWÉìÇÃê›åvé“ÇÕ VRAM
Ç…î[Ç‹ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉÇãñâ¬Ç∑ÇÈÇÊǧDžÇ∑Ç◊Ç´Ç≈Ç∑ÅBQATextureNew
ì‡Ç≈ëÂó ÇÃåvéZÇçsǧèÍçáÇÕì¡Ç…ǪǧÇ≈Ç∑ÅBó·Ç¶ÇŒÅAÉGÉìÉWÉìÇ™ï°êîÉåÉxÉãÇÃÉ~ÉbÉvÉ}ÉbÉvÇçÏê¨ÇµÇΩÇËÅAÉ\ÉtÉgÉEÉFÉAÇ≈ÉeÉNÉXÉ`ÉÉÇà≥èkÇ∑ÇÈèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇÃìxDžDZǧǵÇΩåvéZÇ™åJÇËï‘Ç≥ÇÍÇÈÇΩÇflÅAê´î\Ç™óéÇøÇƒÇµÇ‹Ç¢Ç‹Ç∑ÅB
ÉeÉNÉXÉ`ÉÉÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉÅÉÇÉäÅAÉGÉìÉWÉìÇÃÉÅÉÇÉäÅAVRAM
Ç…íuÇ≠DZÇΔÇ™Ç≈Ç´ÇÈLJÇÃÇΔǵNjÇ∑ÅBÉGÉìÉWÉìÇÃÉÅÉÇÉäÇÕǮǪÇÁÇ≠ÉVÉXÉeÉÄÉqÅ[ÉvÇ…äÑÇËìñǃÇÁÇÍÇÈÇ≈ǵÇÂǧǙÅAïKóvÇ»ÇÁÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvDždžǡǃLJǩNjǢNjÇπÇÒÅBVRAM
è„ÇÃÉeÉNÉXÉ`ÉÉÇÕdžÇ≠Ç‹Ç≈ÉRÉsÅ[Ç≈Ç∑ÅBÉeÉNÉXÉ`ÉÉÇé∏ǧDZÇΔÇ»Ç≠ǢǬÇ≈LJçÌèúâ¬î\Ç≈Ç∑ÅBç≈å„Ç…ÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃǂâï˙ÇÃç€ÇÕÇ≈Ç´ÇÈÇæÇØÉGÉìÉWÉìÇ™ìØä˙ÇéÊÇÈÇÃÇñhÇ¢Ç≈Ç≠ÇæÇ≥Ç¢ÅBÉGÉìÉWÉìÇÕÇ‹ÇΩÅAëóèoçœÇ›ÇÃÉ|ÉäÉSÉìÇ™ê≥ǵÇ≠ï`âÊÇ≥ÇÍÇΩDZÇΔÇämîFǵǃǩÇÁà¿ëSÇ…ÉeÉNÉXÉ`ÉÉÇçÌèúÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
éüÇ…ê›åvDžǬǢǃÅBÇ‹Ç∏ÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉDžǬǢǃéQèΔâÒêîÇÉJÉEÉìÉgÇ∑ÇÈÇÊǧDžǵNjÇ∑ÅBäÑÇËìñǃÇΩnjǩÇËÇÃÉeÉNÉXÉ`ÉÉÇÕéQèΔÉJÉEÉìÉgÇ
1 DžǵNjÇ∑ÅBÉ|ÉäÉSÉìÇëóèoÇ∑ÇÈÇΩÇ—Ç…ÅAéQèΔÉJÉEÉìÉgÇ 1
ÇæÇØëùǂǵNjÇ∑ÅBï`âÊÇ™çœÇfiÇΩÇ—Ç… 1
å∏ÇÁǵNjÇ∑ÅBç≈å„Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™
QATextureDelete ÇåƒÇ—èoǵÇΩÇÁÅAéQèΔÉJÉEÉìÉgÇ
1 å∏ÇÁǵNjÇ∑ÅBéQèΔÉJÉEÉìÉgÇ™Ç‹Çæê≥ÇÃílÇ»ÇÁÅAÉeÉNÉXÉ`ÉÉÇ
VRAM
Ç…ÉçÉbÉNǵǃñ¢ëRÇ…îjä¸Ç≥ÇÍǻǢÇÊǧDžǵNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉeÉNÉXÉ`ÉÉÇâï˙ǵÇΩç€ÅAéQèΔÉJÉEÉìÉgÇ™
0 DžǻǡÇΩÇÁÅAVRAM
Ç©ÇÁÉeÉNÉXÉ`ÉÉÇçÌèúǵÅAÉGÉìÉWÉìì‡ÇÃÉRÉsÅ[LJçÌèúǵNjÇ∑ÅB
ìØéûÇ…ÅAçÌèúÇÃÇΩÇflÇ…ÉLÉÖÅ[ÉCÉìÉOǵÇΩëSÉeÉNÉXÉ`ÉÉÇÃå¬êîLJÉOÉçÅ[ÉoÉãïœêîÇ…ï€éùǵǃǮǴNjÇ∑ÅBDZÇÃÉJÉEÉìÉgÇÕÅAQATextureDelete
ì‡Ç≈ëùǂǵÅAÉåÉìÉ_ÉâÅ[Ç™ÉeÉNÉXÉ`ÉÉÇçÌèúǵÇΩÇÁå∏ÇÁǵNjÇ∑ÅB
ï`âÊÉRÉ}ÉìÉhÇ≈džÇÈÉeÉNÉXÉ`ÉÉÇ™éQèΔÇ≥ÇÍÇΩÇÁÅAǪÇÍÇ™ VRAM
Ç…ÉçÅ[ÉhçœÇ›Ç©Ç«Ç§Ç©É`ÉFÉbÉNǵǃÇ≠ÇæÇ≥Ç¢ÅBVRAM
Ç…Ç»ÇØÇÍÇŒÅAǪÇÃÉeÉNÉXÉ`ÉÉÇ™ì¸ÇÈÇæÇØÇÃãÛÇ´ÉXÉyÅ[ÉXÇíTǵNjÇ∑ÅBé˚óeâ¬î\Ç»ÉXÉyÅ[ÉXÇ™Ç»ÇØÇÍÇŒÅAìØíˆìxÇÃÉTÉCÉYÇÃï ÇÃÉeÉNÉXÉ`ÉÉÇíTǵÅAǪÇÍÇ
VRAM
Ç©ÇÁçÌèúǵNjÇ∑ÅBâºëzÉÅÉÇÉäÇ™ÉIÉìÇÃèÍçáÇÕÅAÉeÉNÉXÉ`ÉÉÇÉçÉbÉNǵǃÅAäÑÇËçûÇ›éûÇ≈LJÉRÉsÅ[Ç≈Ç´ÇÈÇÊǧDžǵǃǮǴNjÇ∑ÅB
ÉGÉìÉWÉìÇÃíÜÇ…ÇÕ VRAM
ÇΔÉGÉìÉWÉìÉÅÉÇÉäÇäTîOìIÇ…ãÊï ǵǻǢLJÇÃLJdžÇËÇ‹Ç∑ÅBDZÇÃÇÊǧǻÉGÉìÉWÉìÇÕí èÌÅAé¿ç€Ç…ÉeÉNÉXÉ`ÉÉÇÃçÏê¨Ç™éwé¶Ç≥ÇÍÇΩéûì_Ç≈
(QATextureNew ). VRAM
Ç…ÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÅAǪDZDžÉRÉsÅ[ǵNjÇ∑ÅBDZÇÃé¿åªï˚ñ@Çé¶ÇµÇ‹Ç∑ÅBQATextureNew
Ç™ÉeÉNÉXÉ`ÉÉÇäÑÇËìñǃÇÈÇæÇØÇÃè\ï™Ç»ÉÅÉÇÉäǙǻǢèÍçáÅAçÌèúÇÃÇΩÇflÇ…ÉLÉÖÅ[ÉCÉìÉOÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉǙǻǢǩÉ`ÉFÉbÉNǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉǙdžÇÍÇŒÅAǪÇÃÉJÉEÉìÉgÇ™É[ÉçÇ…Ç»ÇÈÇ‹Ç≈ÉuÉçÉbÉNǵÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃDžê¨å˜Ç∑ÇÈÇ©ÅAÉLÉÖÅ[è„ÇÃÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍÇÈÇ‹Ç≈çƒééçsǵNjÇ∑ÅB
ç≈å„Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ©ÇÁóòópâ¬î\Ç»ÉeÉNÉXÉ`ÉÉÉÅÉÇÉäÇÃó ÇÃñ‚Ç¢çáÇπÇéÛÇØÇΩÇÁÅAÇ∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™çÌèúÇ≥ÇÍÇÈÇ‹Ç≈ìØä˙ÇéÊÇËÅAìKêÿÇ»ÉÅÉÇÉäó Çï‘ǵNjÇ∑ÅB
DZÇÃìÆçÏÇï\Ç∑âºëzÉRÅ[ÉhÇé¶ÇµÇ‹Ç∑ÅB
"QA "
Ç≈énÇ‹ÇÈä÷êîÇÕïÅí ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìä÷êîÇ≈Ç∑ÅB
"eng "
Ç≈énÇ‹ÇÈä÷êîÇÕÉGÉìÉWÉìÇÃì‡ïîä÷êîÇ≈Ç∑ÅBà»â∫Ç≈ÇÕÇ∑Ç◊ǃÇÃÉãÅ[É`ÉìÇ™íËã`Ç≥ÇÍǃǢÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB
"int " Ç≈énÇ‹ÇÈä÷êîÇÕÅAäÑÇËçûÇ›éûÇ‹ÇΩÇÕ MP
É^ÉXÉNÇΔǵǃëñçsâ¬î\Ç»ÉGÉìÉWÉìä÷êîÇ≈Ç∑ÅB
VRAM_ENGINE ÇÕÅAï Ç…ÉGÉìÉWÉì VRAM
ÇégǧÇÃÇ≈ÇÕÇ»Ç≠ÅAäÑÇËìñǃéûÇ…Ç∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ VRAM
Ç…ÉRÉsÅ[Ç∑ÇÈÉGÉìÉWÉìÇ…äYìñǵNjÇ∑ÅB
QATextureNew
{
#if VRAM_ENGINE
engReserveMemory();
#endif
ÉeÉNÉXÉ`ÉÉÉIÉuÉWÉFÉNÉgÇäÑÇËìñǃÇÈ
éQèΔÉJÉEÉìÉg (refCount) Ç 1 Ç…ê›íËÇ∑ÇÈ
#if VRAM_ENGINE
intLoadTexture();
#elseif
if (ÉeÉNÉXÉ`ÉÉÇÃÉçÉbÉNÉtÉâÉOÇ™ÉIÉì)
intLoadTexture();
#endif VRAM_ENGINE
}
QATextureDetach
{
#if !VRAM_ENGINE
engReserveMemory();
ÉeÉNÉXÉ`ÉÉÇÉGÉìÉWÉìÉÅÉÇÉäÇ…ÉRÉsÅ[Ç∑ÇÈ
#endif
}
QATextureDelete
{
ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉgÇ 1 å∏ÇÁÇ∑
if (refCount == 0)
{
engDeleteFromEngineMemory()
engDeleteFromVRAM()
}
else
{
gNumberOfTexturesToDelete++;
ÉeÉNÉXÉ`ÉÉÇÃÉçÉbÉNÉtÉâÉOÇê›íËÇ∑ÇÈ
intLoadTexture();
}
}
engReserveMemory
{
while ( (gNumberOfTexturesToDelete > 0) ǩǬ
(ÉeÉNÉXÉ`ÉÉÇÉRÉsÅ[Ç∑ÇÈÇæÇØÇÃÉGÉìÉWÉìÉÅÉÇÉäǙǻǢ)
{
MPYield();
YieldToAnyThread();
}
}
QADrawTriTexture
{
assert (çÌèúÉLÉÖÅ[Ç…ÉeÉNÉXÉ`ÉÉǙǻǢ)
ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉgÇ 1 ëùÇ‚Ç∑
ï`âÊÉRÉ}ÉìÉhÇÉLÉÖÅ[ÉCÉìÉOÇ∑ÇÈ
}
intDrawTriTexture
{
#if !VRAM_ENGINE
if (ÉeÉNÉXÉ`ÉÉÇ™ VRAM DžǻǢ)
intLoadTexture();
#endif
éOäpå`Çï`âÊÇ∑ÇÈ
ÉeÉNÉXÉ`ÉÉÇÃéQèΔÉJÉEÉìÉg (refCount) Ç 1 å∏ÇÁÇ∑
if (ÉeÉNÉXÉ`ÉÉÇà refCount Ç™É[ÉçÇ…ìôǵǢ)
{
engDeleteFromEngineMemory()
engDeleteFromVRAM()
gNumberOfTexturesToDelete--;
}
}
intLoadTexture
{
#if !VRAM_ENGINE
if (ÉeÉNÉXÉ`ÉÉÇì¸ÇÍÇÈ VRAM ǙǻǢ)
ãÛÇ´Ç™Ç≈Ç´ÇÈÇ‹Ç≈ÉAÉìÉçÉbÉNÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈ
#endif
ÉeÉNÉXÉ`ÉÉÇ VRAM Ç…ÉRÉsÅ[Ç∑ÇÈ
}
|
VRAM Ç©ÇÁÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈèÍçáÅAǵnjÇÁÇ≠égópÇ≥ÇÍǃǢǻǢ
(LRU ÉLÉÉÉbÉVÉìÉO)
ìØÇ∂ÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇëIÇÒÇ≈çÌèúǵNjÇ∑ÅB
É|ÉäÉSÉìÇÕÅAǪÇÍé©ëÃÇÃèáèòÇ≈ÇÕÇ»Ç≠ÅAVRAM
Ç…ÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈâÒêîÇç≈è¨Ç…Ç∑ÇÈÇÊǧǻèáèòÇ≈ÉLÉÖÅ[ÉCÉìÉOÇ≈Ç´ÇÍÇŒóùëzìIÇ≈Ç∑ÅBǵǩǵñ‚ëËÇÕÅAìØÇ∂
Z
ílÇã§óLÇ∑ÇÈï°êîÇÃÉ|ÉäÉSÉìÇÃàµÇ¢Ç≈Ç∑ÅBê≥ǵǢÉ|ÉäÉSÉìÇÃèáèòÇ≈ï`âÊǵÇΩÇΔÇ´ÇΔÇÕà·Ç§ÉsÉNÉZÉãílÇ™èëÇ´çûÇ‹ÇÍǃǵNjǢNjÇ∑ÅB
VRAM
ÉGÉìÉWÉìÇÕÅAêVǵǢÉeÉNÉXÉ`ÉÉÇ™äÑÇËìñǃÇÁÇÍÇÈÇΔÉuÉçÉbÉNÇ∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBëºÇÃÉGÉìÉWÉìÇÕÇŸÇΔÇÒÇ«ÉuÉçÉbÉNÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÇ™
(QATextureDetach ì‡Ç≈ÇÕ)ÅAÉeÉNÉXÉ`ÉÉÇ VRAM
Ç…ÉçÅ[ÉhÇ∑ÇÈÇÃÇ…ÇÊÇËëΩÇ≠ÇÃéûä‘ǙǩǩÇËÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ïpî…Ç…ÉeÉNÉXÉ`ÉÉÇïœçXÇ∑ÇÈèÍçáÇÕì¡Ç…ǪǧÇ≈Ç∑ÅBDZÇÍÇ©ÇÁÅAÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃDžÇÊÇÈïââ◊Çç≈è¨Ç…Ç∑ÇÈÇÊǧÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™çsǧÇ◊Ç´éñïøÇèqÇ◊Ç‹Ç∑ÅB
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉeÉNÉXÉ`ÉÉä«óùÇÃêiÇflï˚
DZDZÇ≈ÇÕÅAVRAM
Ç…ì¸ÇÈÇÊÇËëΩÇ≠ÇÃÉeÉNÉXÉ`ÉÉǙdžÇÈDZÇΔÇâºíËǵNjÇ∑ÅBç°ì˙Ç≈ÇÕDZÇÍÇ™ïÅí ÇÃÉPÅ[ÉXÇæÇ©ÇÁÇ≈Ç∑ÅBÇΩÇæÅAì¡íËÇÃÉQÅ[ÉÄÉåÉxÉãÇ≈ÅAÉeÉNÉXÉ`ÉÉÇ™Ç∑Ç◊ǃ
VRAM
Ç…î[Ç‹ÇËÅAÉeÉNÉXÉ`ÉÉèWçáÇÃêÿÇËë÷ǶǙïsóvÇ»èÍçáÇÕÅAÇ∑ÇŒÇÁǵǢê´î\Ç™èoÇ‹Ç∑ÅB
QATextureNew
ÇåƒÇ—èoÇ∑ÇΔÅAëΩÇ≠ÇÃÉGÉìÉWÉìÇÕé©ìÆìIÇ…ÉeÉNÉXÉ`ÉÉÇÉ~ÉbÉvÉ}ÉbÉvǵNjÇ∑ÅBǵǩǵDZǧÇ∑ÇÈÇΔÅAÉeÉNÉXÉ`ÉÉÇÃçÏê¨éûä‘Ç™ëùëÂÇ∑ÇÈÇÃÇ≈ÅAâ¬î\ǻǩǨÇËÉeÉNÉXÉ`ÉÉÇÕéñëOÇ…É~ÉbÉvÉ}ÉbÉvǵǃǮÇ≠ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBdžÇÁÇ©Ç∂ÇflÉ~ÉbÉvÉ}ÉbÉvÇ≥ÇÍÇΩÉeÉNÉXÉ`ÉÉÇÕ
RAM ÇÇ®ÇÊǪ 33%
ëΩÇ≠égópǵNjÇ∑Ç™ÅAÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉèWçáÇä«óùÇ∑ÇÈç€Ç…ëΩÇ≠ÇÃóòì_Ç™ê∂Ç∂Ç‹Ç∑ÅB
äÆëSÇ»ÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇ™ VRAM
Ç…î[Ç‹ÇÁǻǢèÍçáÇ≈LJÅAÉeÉNÉXÉ`ÉÉÇÉ_ÉEÉìÉTÉìÉvÉãÇ∑ÇÈDZÇΔÇ≈
VRAM Ç…ì¸ÇÍÇÁÇÍÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBäÆëSÉTÉCÉYÇÃÉeÉNÉXÉ`ÉÉÇ≈
QATextureNew
ÇåƒÇ—èoÇ∑ÇÃÇ≈ÇÕÇ»Ç≠ÅAéüÇ…è¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇ≈åƒÇ—èoǵNjÇ∑ÅBLJǡÇΔï°éGÇ»ó·Ç≈ÇÕÅAǪÇÃÉeÉNÉXÉ`ÉÉÇégǡǃï`âÊÇ≥ÇÍÇÈÉ|ÉäÉSÉìÇÃÉäÉXÉgÇí≤Ç◊ÅAç≈LJãflÇ¢
Z
ç¿ïWÇ…äÓÇ√ǢǃÉ~ÉbÉvÉ}ÉbÉvÉåÉxÉãÇëIëǵNjÇ∑ÅBì¡íËÇÃÉeÉNÉXÉ`ÉÉÇ≈ï`Ç©ÇÍÇÈÉ|ÉäÉSÉìÇ™è¨Ç≥Ç≠ÅAó£ÇÍǃǢÇÈèÍçáÇÕÅAï`âÊåãâ Ç…ÇÕñ≥éãÇ≈Ç´ÇÈíˆìxÇÃâeãøÇµÇ©ó^ǶÇ∏Ç…ÅAÇÊÇËè¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇégópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB128x128
É~ÉbÉvÉ}ÉbÉvÇ 32x32 É~ÉbÉvÉ}ÉbÉvÇ≈íuÇ´ä∑ǶÇÈÇΔÅAVRAM
ÇÃégópó ÇÕÇ®ÇÊǪ 95% è≠Ç»Ç≠Ç»ÇËÇ‹Ç∑ÅBVRAM
Ç™è≠ǻǢèÍçáÇÕëÂÇ´Ç»å¯â ǙdžÇËÇ‹Ç∑ÅBÇÊÇËè¨Ç≥Ç»É~ÉbÉvÉ}ÉbÉvÇ™çÏê¨çœÇ›ÇÃèÍçáÅAÇÊÇËëÂÇ´Ç»ÉeÉNÉXÉ`ÉÉÇçÏê¨Ç∑ÇÈÇÃÇÕå„DžǵÇΩǟǧǙÇÊÇ¢Ç≈ǵÇÂǧÅB
àÍìxÇ…ÇΩÇ≠Ç≥ÇÒÇÃÉeÉNÉXÉ`ÉÉÇçÏê¨Ç∑ÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAçÏãΔÇÉAÉjÉÅÅ[ÉVÉáÉìÇÃï°êîÉtÉåÅ[ÉÄÇ…éUÇÁÇ∑ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBDZǧÇ∑ÇÈDZÇΔÇ≈ÅAëΩêîÇÃÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉfÉBÉìÉOÇ…ÇÊÇÈÉtÉåÅ[ÉÄÉåÅ[ÉgÇÃóéÇøÇå∏ÇÁǵÅAï\é¶Ç™ÉXÉÄÅ[ÉYÇ…Ç»ÇËÇ‹Ç∑ÅBó·Ç¶ÇŒÅAëΩêîÇÃÉeÉNÉXÉ`ÉÉÇóvÇ∑ÇÈóÃàÊÇ…à⁄ÇÈèÍçáÅAï°êîÉtÉåÅ[ÉÄÇ…ìnǡǃÅAǪÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇdžÇÁÇ©Ç∂ÇfléÊìæÇµÇƒÇ®Ç´ÅAé¿ç€Ç…ï`âÊÇ≈ïKóvÇ…Ç»ÇÈéûì_Ç≈ÇÕÇ∑Ç≈Ç…ëSïîÇ™ÉÅÉÇÉäè„DždžÇÈÇÊǧDžǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃè¨Ç≥ÇflÇÃÉoÅ[ÉWÉáÉìÇêÊÇ…ÉçÅ[ÉhǵǃǮǴÅAëÂÇ´Ç»ÉeÉNÉXÉ`ÉÉÇljǡÇ≠ÇËéùǡǃǴNjÇ∑ÅBç≈å„Ç…ÅAÉÅÉÇÉäè„Ç…ìKêÿÇ»ÉeÉNÉXÉ`ÉÉǙǻǢèÍçáÅAç≈è¨ÇÃÉ~ÉbÉvÉ}ÉbÉvÉåÉxÉãÇ©ÇÁÉJÉâÅ[ÇéÊÇËèoǵÅAÇ©ÇÌÇËDžǪÇÍÇ≈éOäpå`Ç…ÉOÅ[ÉçÅ[ÉVÉFÅ[ÉfÉBÉìÉOÇÇ©ÇØÇÈÇΔǢǧï˚ñ@LJdžÇËÇ‹Ç∑ÅB
èdóvÇ»ê´î\å¸è„çÙÇÃÇ–ÇΔǬDžÅAåªç›ÇÃÉeÉNÉXÉ`ÉÉÇêÿÇËë÷ǶÇÈâÒêîÇå∏ÇÁÇ∑DZÇΔǙdžÇËÇ‹Ç∑ÅBÉeÉNÉXÉ`ÉÉÇÉZÉbÉgÇ∑ÇÈÇΔÅAëΩÇ≠ÇÃÉGÉìÉWÉìÇÕǪÇÃÉeÉNÉXÉ`ÉÉÇ
VRAM
Ç…ÉçÅ[ÉhÇ∑ÇÈǻǫÇÃèàóùÇçsǢNjÇ∑ÅBÉ\ÉtÉgÉEÉFÉAÉGÉìÉWÉìÇ≈ÇÕâΩLJǵǻÇ≠ǃLJÅAÉnÅ[ÉhÉEÉFÉAÉAÉNÉZÉâÉåÅ[É^ÇÃë§Ç≈ÉeÉNÉZÉãÉLÉÉÉbÉVÉÖÇópǢǃê´î\å¸è„Çê}ǡǃǢÇÈǩLJǵÇÍÇ‹ÇπÇÒÅBÉeÉNÉXÉ`ÉÉÇêÿÇËë÷ǶÇÈÇΔÅAÉLÉÉÉbÉVÉÖÇ™ÉtÉâÉbÉVÉÖÇ≥ÇÍǃǵNjǢNjÇ∑ÅBíPàÍÇÃÉeÉNÉXÉ`ÉÉÇ≈ëΩêîÇÃÉ|ÉäÉSÉìÇï`âÊÇ∑ÇÈÇΔê´î\Ç™å¸è„ǵNjÇ∑ÅB
çlǶï˚ÇåæÇ§ÇΔÅADZÇÍÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉfÅ[É^ÇìKêÿÇ…ï“ê¨Ç∑ÇÈDZÇΔÇ≈é¿åªÇ≈Ç´Ç‹Ç∑ÅBó·Ç¶ÇŒÅA1
å¬ÇÃÉeÉNÉXÉ`ÉÉÇÉÇÉfÉãëSëÃÇ…îÌÇπÇÈÇÊǧǻèÍçáÅAǪÇÃÉeÉNÉXÉ`ÉÉÇ…äÓÇ√Ç≠ÉIÉuÉWÉFÉNÉgÇÕàÍìxÇ…ï`âÊÇ∑ÇÈÇÊǧDžǵNjÇ∑ÅBDZǧÇ∑ÇÍÇŒÅA1
å¬ÇÃÉÇÉfÉãDžǬǴÉçÅ[ÉhÇ∑ÇÈÉeÉNÉXÉ`ÉÉÇÃêîÇ™ 1
å¬Ç…å∏ÇËÇ‹Ç∑ÅB
ÉeÉNÉXÉ`ÉÉÇÃäÑÇËìñǃÇÃëOèÄîı
ÇÊÇËìOíÍǵÇΩâåàï˚ñ@ÇΔǵǃÅAQARenderStart
ÇåƒÇ—èoÇ∑ëOÇ…ÅAÇ∑Ç◊ǃÇÃÉ|ÉäÉSÉìèÓïÒÇåvéZǵï€ë∂ǵǃǮÇ≠ï˚ñ@ǙdžÇËÇ‹Ç∑ÅBDZÇÃåvéZÇÕÉnÅ[ÉhÉEÉFÉAÇ™íºëOÇÃÉtÉåÅ[ÉÄÇï`âÊÇ∑ÇÈä‘Ç…çsǧDZÇΔÇ™â¬î\Ç»ÇÃÇ≈ÅAîÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇ≈ÇÕÉÅÉäÉbÉgǙdžÇËÇ‹Ç∑ÅBDZÇÃèÓïÒÇ…äÓÇ√Ç´ÅAÉ|ÉäÉSÉìèÓïÒÇÉ\Å[ÉgǵǃÅADZÇÃÉVÅ[ÉìÇÃï`âÊÇ≈é¿ç€Ç…ïKóvÇ»ÉeÉNÉXÉ`ÉÉèWçáÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇΩÇæÇµÅADZÇÃï˚ñ@Ç≈ÇÕÅAåvéZçœÇ›ÇÃÉ|ÉäÉSÉìÉfÅ[É^ÇÉÅÉÇÉäè„Ç…ï€éùÇµÇ»ÇØÇÍnjǻÇÁǻǢÇΔǢǧÉIÅ[ÉoÅ[ÉwÉbÉhÇ™ê∂Ç∂Ç‹Ç∑ÅB
óòópâ¬î\Ç»ÉVÅ[ÉìèÓïÒÇ©ÇÁïKóvÇ»ëSÉeÉNÉXÉ`ÉÉÇåàíËÇ∑ÇÈDZÇΔÇ™â¬î\Ç»èÍçáLJdžÇËÇ‹Ç∑ÅBDZÇÃèÍçáÅAïKóvÇ»ÉeÉNÉXÉ`ÉÉÇëSïîÉçÅ[ÉhǵÇΩå„ÅAçƒÇ—ÉäÉXÉgÇÇΩÇ«ÇËÅAÉåÉìÉ_ÉâÅ[Ç…ëóèoǵNjÇ∑ÅB
Ç¢Ç∏ÇÍÇÃï˚ñ@ÇópǢǃLJÅAåãâ ÇΔǵǃåªç›ÇÃÉeÉNÉXÉ`ÉÉÇê›íËÇ∑ÇÈÇΩÇflÇÃåƒÇ—èoǵâÒêîÇ™ç≈è¨Ç…Ç»ÇËÅAVRAM
Ç÷ÇÃÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇΔÉAÉìÉçÅ[ÉhÇåJÇËï‘Ç∑DZÇΔÇ≈ê∂Ç∂ÇÈÉXÉâÉbÉVÉìÉOÇëÂïùÇ…å∏ÇÁÇ∑DZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBïKóvÇ»ÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAÉGÉìÉWÉìÇ…Ç‹ÇæÉçÅ[ÉhǵǻǢLJÇÃǙdžÇÍÇŒÅAÉeÉNÉXÉ`ÉÉÇçÏê¨ÇµÇ‹Ç∑ÅBDZÇÃå„ÅAÉçÅ[ÉhçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìÇÇ∑Ç◊ǃï`âÊǵNjÇ∑ÅBÇ≥ÇÁÇ…ï ÇÃÉeÉNÉXÉ`ÉÉÇÉçÅ[ÉhÇ∑ÇÈÇ…ÇÕÅAQASync
ÇåƒÇ—èoǵÅAÇ¢Ç≠ǬǩÉeÉNÉXÉ`ÉÉÇçÌèúǵÅAï`âÊÇ∑Ç◊Ç´êVǵǢÉeÉNÉXÉ`ÉÉåQÇÉçÅ[ÉhǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇçÌèúÇ∑ÇÈéûì_Ç≈ÉGÉìÉWÉìÇ™é©ìÆìIÇ…ìØä˙ÇéÊÇÈDZÇΔÇ™ÇÌǩǡǃǢÇÈèÍçáÇÕ
QASync
ÇåƒÇ—èoÇ∑ïKóvÇÕÇ»Ç≠ÅAǪÇÃǟǧǙê´î\Ç™å¸è„ǵNjÇ∑ÅBÇ¢Ç∏ÇÍÇÃèÍçáÇ≈LJÅAï`âÊÇ∑Ç◊Ç´ÉeÉNÉXÉ`ÉÉǙǻÇ≠Ç»ÇÈÇ‹Ç≈ÅAÉeÉNÉXÉ`ÉÉÇÃçÏê¨ÇΔçÌèúÇåJÇËï‘ǵNjÇ∑ÅB
í èÌÉAÉãÉtÉ@ÉuÉåÉìÉhÉeÉNÉXÉ`ÉÉÇégǧÉ|ÉäÉSÉìÇÃï`âÊÇÕÅAïsìßñæÇ»éOäpå`ÇÃï`âÊÇ™Ç∑Ç◊ǃçœÇÒÇ≈Ç©ÇÁçsǢNjÇ∑ÅBÉtÉåÅ[ÉÄëSëÃÇÃï`âÊÇ™èIóπÇ∑ÇÈëOÇ…ÉAÉãÉtÉ@ÉuÉåÉìÉhÉ|ÉäÉSÉìÇ≈égǧÉeÉNÉXÉ`ÉÉÇçÌèúǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB
à»â∫Ç…ÉåÉìÉ_ÉäÉìÉOÉãÅ[ÉvÇï\Ç∑âºëzÉRÅ[ÉhÇÃífï–Çé¶ÇµÇ‹Ç∑ÅB
RenderTextures()
ÇÕÅAÉçÅ[ÉhçœÇ›ÇÃÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAǪÇÍÇÁÇÃÉeÉNÉXÉ`ÉÉÇ…ëŒâûÇ∑ÇÈÇ∑Ç◊ǃÇÃéOäpå`Çï`âÊǵNjÇ∑ÅB
LoadTextures()
ÇÕÅAÉeÉNÉXÉ`ÉÉÇÃÉäÉXÉgÇÇΩÇ«ÇËÅAÇ‹Çæï`âÊÇ≥ÇÍǃǢǻǢéOäpå`Ç…ëŒâûǵÇΩÉeÉNÉXÉ`ÉÉǙdžÇÍnjǪÇÍÇÉçÅ[ÉhǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇÃÉçÅ[ÉhÇ…é∏îsǵÇΩÇÁÅAïsóvÇ»ÉeÉNÉXÉ`ÉÉÇÇ¢Ç≠ǬǩçÌèúǵǃçƒééçsǵNjÇ∑ÅBǪÇÃÉVÅ[ÉìÇÃï`âÊÇ…Ç∑Ç◊ǃÇÃÉeÉNÉXÉ`ÉÉÇ™ïKóvÇ»èÍçáÅAÉãÅ[É`ÉìÇÕèIóπǵNjÇ∑ÅBLoadTextures()
ÇÕÅAÉGÉìÉWÉìÇ…ÉçÅ[ÉhÇ≈ǴǻǩǡÇΩÉeÉNÉXÉ`ÉÉǙdžÇÈÇΔ false
Çï‘ǵNjÇ∑ÅBÉeÉNÉXÉ`ÉÉÇçÌèúÇ≈ǴǻǢÉJÅ[ÉhÇ…ëŒâûÇ∑ÇÈÇΩÇflÅAìÒâÒë±ÇØÇƒêVǵǢÉeÉNÉXÉ`ÉÉÇ™çÏê¨Ç≈ǴǻǩǡÇΩÇÁÅAtrue
Çï‘Ç≥Ç»Ç≠ǃÇÕÇ»ÇËÇ‹ÇπÇÒÅB
ÉåÉìÉ_ÉäÉìÉOÉãÅ[ÉvÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
QASync();
done = LoadTextures();
QARenderStart(...);
RenderTextures();
while (!done)
{
// Loadtextures() Ç≈çÌèúÇ∑ÇÈÇΩÇflÅADZDZNjÇ≈ÇÃÉåÉìÉ_ÉäÉìÉOÇèIóπÇ≥ÇπÇÈ
QASync();
done = LoadTextures();
RenderTextures();
}
QARenderEnd(...);
|
ÉGÉìÉWÉìé©êgÇ™ìØä˙ÇéÊÇÈèÍçáÇÕ QASync
Ç÷ÇÃåƒÇ—èoǵÇÕÇ∑Ç◊ǃçÌèúÇ≈Ç´Ç‹Ç∑ÅB
RAVE
ÇÃÉpÉtÉHÅ[É}ÉìÉXÉ`ÉÖÅ[ÉjÉìÉO
ÉpÉtÉHÅ[É}ÉìÉXÉ`ÉÖÅ[ÉjÉìÉOÇÕDZÇà TECHNOTE
ÇÃç≈ëÂÇÃè≈ì_Ç≈ǵÇΩÅBóùóRÇÕ RAVE
ÇégópǵǃèëÇ©ÇÍÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÇŸÇΔÇÒÇ«ÉQÅ[ÉÄÇæÇ©ÇÁÇ≈Ç∑ÅBDZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕ
RAVE
ÇÃÉpÉtÉHÅ[É}ÉìÉXÇè„Ç∞ÇÈÇÃÇ…ñóßǬǢÇ≠ǬǩÇÃéñïøÇèqÇ◊Ç‹Ç∑ÅB
1) QARenderStart ÇåƒÇ—èoÇ∑ÇΔÅARAVE ÉGÉìÉWÉìÇÕ
Z ÉoÉbÉtÉ@ÇÃà íuÇÇ∑Ç◊ǃ z=1.0
Ç…ÉäÉZÉbÉgǵÅAëSÉsÉNÉZÉãÇîwåiêFÇ…ê›íËǵNjÇ∑ÅBÉRÉìÉeÉLÉXÉgÇ…èâä˙âªí ímÉãÅ[É`ÉìÇ™ìoò^Ç≥ÇÍǃǢÇÈÇΔÅAîwåiêFÇÕê›íËÇ≥ÇÍÇ∏ÅAèâä˙âªÉÅÉ\ÉbÉhÇ™åƒÇ—èoÇ≥ÇÍÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ïKÇ∏ñàÉtÉåÅ[ÉÄÇÃÉoÉbÉtÉ@ëSëÃÇï`âÊÇ∑ÇÈèÍçáÇÕÅAâΩLJǵǻǢä÷êîÇèâä˙âªéËë±Ç´ÇΔǵǃìoò^Ç∑ÇÈDZÇΔÇ≈ÅAêîÉTÉCÉNÉãêflñÒÇ≈Ç´Ç‹Ç∑ÅB
2)
Ç«ÇÒÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈LJëSÇ≠ïœâªÇµÇ»Ç¢ê√ìIÇ»ÉfÅ[É^ÇéùǡǃǢÇÈÇÕÇ∏Ç≈Ç∑ÅBÉGÉìÉWÉìÇ™ï`âÊÉLÉÉÉbÉVÉÖÇÉTÉ|Å[ÉgÇ∑ÇÈèÍçáÅAê√ìIÉfÅ[É^ÇëSïîÉLÉÉÉbÉVÉÖÇ…ï`Ç´ÅADZÇÍÇ≈äeÉtÉåÅ[ÉÄÇèâä˙âªÇµÇ‹Ç∑ÅBÉLÉÉÉbÉVÉÖÇÕí«â¡ÇÃ
VRAM ÇégǧǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅAÉGÉìÉWÉìÇÕëÂó ÇÃÉCÉÅÅ[ÉWÇΔ Z
ÉoÉbÉtÉ@èÓïÒÇçÇë¨Ç…èâä˙âªÇ≈Ç´Ç‹Ç∑ÅBÉLÉÉÉbÉVÉÖÇÃégópÇÕçÇë¨Ç»
Z
ÉeÉXÉgã@î\ÇÉTÉ|Å[ÉgÇ∑ÇÈÉnÅ[ÉhÉEÉFÉAÇ≈ÇÕó«Ç¢ëIëÇ≈Ç∑Ç™ÅAVRAM
Ç™ë´ÇËǻǢèÍçáÇÕïsìKêÿÇ≈Ç∑ÅBÉLÉÉÉbÉVÉÖÇÃï`âÊÇ≈égópǵÇΩÉeÉNÉXÉ`ÉÉÇÕÉÅÉCÉìÇÃÉOÉâÉtÉBÉbÉNÉXÉãÅ[ÉvÇ≈ÇÕÉçÅ[ÉhÇ≥ÇÍǻǢÇΩÇflÅADZÇÃÉÅÉÇÉäÇÕâÒïúÇ≈Ç´Ç‹Ç∑ÅB
3)
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉ|ÉäÉSÉìÇ™Ç∑Ç≈Ç…âúÇ©ÇÁÇÃê[Ç≥DžǵÇΩǙǡǃÉ\Å[ÉgçœÇ›ÇÃèÍçáÇÕÅAZ
ÉoÉbÉtÉ@ǻǵÇÃÉRÉìÉeÉLÉXÉgÇçÏê¨ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBDZÇÍÇ…ÇÊÇËÉeÉNÉXÉ`ÉÉópÇ…í«â¡ÇÃ
VRAM Ç™égópÇ≈Ç´ÇÈÇÊǧDžǻÇËÅAïsóvÇ» Z
ÉoÉbÉtÉ@èÓïÒÇÃèëÇ´çûǛDžîÔÇ‚Ç≥ÇÍÇÈéûä‘Ç™êflñÒÇ≥ÇÍÇ‹Ç∑ÅB
É|ÉäÉSÉìÇÃàÍïîÇ™É\Å[ÉgçœÇ›ÇÃèÍçáÅAZ ÉâÉCÉgÇ‹ÇΩÇÕ Z
ÉeÉXÉgÇÃÇ¢Ç∏ÇÍǩǙÇÊÇËå¯ó¶ìIǩǫǧǩÇí≤Ç◊ǃÇ≠ÇæÇ≥Ç¢ÅBZ
ÉâÉCÉgÇÃǟǧǙå¯ó¶Ç™ó«ÇØÇÍÇŒÅAkQATag_ZFunction
É^ÉOÇ kQAZFunction_True
Ç…ïœÇ¶ÇƒÅAÉ\Å[ÉgçœÇ›ÇÃÉ|ÉäÉSÉìÇÇ∑Ç◊ǃâúÇ©ÇÁéËëOÇ…å¸Ç©Ç¡Çƒï`âÊǵǃÇ≠ÇæÇ≥Ç¢ÅBǪÇÃå„í èÌÇÃê›íËÇ…ñflǵÅAécÇËÇÃÉ|ÉäÉSÉìÇï`âÊǵǃÇ≠ÇæÇ≥Ç¢ÅBZ
ÉeÉXÉgÇÃǟǧǙë¨ÇØÇÍÇŒÅAkQATag_ZFunction
É^ÉOÇÕǪÇÃNjNjDžǵǃÅAÇ‹Ç∏É\Å[ÉgçœÇ›ÇÃÉ|ÉäÉSÉìÇéËëOÇ©ÇÁâúÇ÷ï`âÊÇµÇƒÇæÇ≥Ç¢ÅB
4) RAVE
ÉCÉÅÅ[ÉWè„Ç…å„Ç≈çáê¨Ç™ïKóvÇ»èÍçáÅAǪÇÍÇÇ∑Ç◊ǃÉrÉbÉgÉ}ÉbÉvÇ…ï`âÊǵǃÅAQADrawBitMap
Ç≈ÉRÉsÅ[ǵǃǛǃÇ≠ÇæÇ≥Ç¢ÅBç≈èIìIÇ»çáê¨ÇÕÉnÅ[ÉhÉEÉFÉAÇ≈çsÇÌÇÍÇÈÇΩÇflÅAïWèÄÉOÉâÉtÉBÉbÉNÉXÉãÅ[É`ÉìÇ≈ÉrÉbÉgÉ}ÉbÉvÇï`âÊÇ∑ÇÈDZÇΔÇ™â¬î\Ç…Ç»ÇËÇ‹Ç∑ÅB
5)
ÉeÉNÉXÉ`ÉÉÇÃêÿÇËë÷ǶÇç≈è¨Ç…Ç∑ÇÈÇÊǧÉfÅ[É^Çï“ê¨ÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBëSÉtÉåÅ[ÉÄÇ≈égópÇ≥ÇÍÇÈÉeÉNÉXÉ`ÉÉÇÕÉçÉbÉNÉtÉâÉOÇê›íËǵǃÇ≠ÇæÇ≥Ç¢ÅBÉfÅ[É^ÇÕÉXÉgÉäÉbÉvÇ‚ÉtÉ@ÉìÇópǢǃíPàÍÇÃÉeÉNÉXÉ`ÉÉÇ≈ï`âÊǵǃÅAÉnÅ[ÉhÉEÉFÉAÉAÉNÉZÉâÉåÅ[É^ÇΔÇÃä‘Ç≈ïKóvÇΔÇ»ÇÈÉoÉìÉhïùÇå∏ÇÁǵǃÇ≠ÇæÇ≥Ç¢ÅBÉXÉgÉäÉbÉvÇ™égǶǻǢèÍçáÇÕÅAéOäpå`ÇÃèWÇ‹ÇËÇàÍìxÇ…ëSïî
kQAVertexMode_Tri
ÉtÉâÉOÇégǡǃëóèoǵǃÇ≠ÇæÇ≥Ç¢ÅB
6)
îÒìØä˙ÉnÅ[ÉhÉEÉFÉAÇäàópÇ≈Ç´ÇÈÇÊǧÉGÉìÉWÉìÇê›åvǵǃÇ≠ÇæÇ≥Ç¢ÅBQARenderEnd
ÇåƒÇ—èoǵÇΩÇÁÅAÇ∑ÇÆÇ…ÉAÉjÉÅÅ[ÉVÉáÉìÇÃéüÇÃÉtÉåÅ[ÉÄÇÃåvéZÇäJénǵǃÇ≠ÇæÇ≥Ç¢ÅBRAVE
ÇÃåªçsÉoÅ[ÉWÉáÉìÇÕ QARenderEnd
ÇÃíÜÇ≈ìØä˙ÇéÊÇËÇ‹Ç∑Ç™ÅAè´óàÇà RAVE ÉoÅ[ÉWÉáÉìÇΔëΩÇ≠Çà RAVE
ÉGÉìÉWÉìÇ≈ÇÕÅAÉnÅ[ÉhÉEÉFÉAÇ…ÇÊÇÈÉåÉìÉ_ÉäÉìÉOÇΔ 3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃèàóùÇÉIÅ[ÉoÅ[ÉâÉbÉvÇ≥ÇπÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇÊǧDžǻÇÈÇ≈ǵÇÂǧÅB
RAVE ÇÕåªç›É}ÉãÉ`ÉvÉçÉZÉT API
ÇÉTÉ|Å[ÉgǵNjÇπÇÒÇ™ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈DZÇÍÇópÇ¢ÇÈDZÇΔÇÕÇ≈Ç´Ç‹Ç∑ÅBÇ∑Ç◊ǃÇÃ
RAVE
Ç÷ÇÃåƒÇ—èoǵÇÕÉÅÉCÉìÉXÉåÉbÉhÇ©ÇÁçsǧïKóvǙdžÇËÇ‹Ç∑Ç™ÅAÉWÉIÉÅÉgÉäÇÃåvéZÇÕ
MP
É^ÉXÉNì‡Ç≈é¿çsÇ≈Ç´Ç‹Ç∑ÅBÉVÉìÉOÉãÉvÉçÉZÉTÉVÉXÉeÉÄÇ≈džǡǃLJÅAÉÅÉCÉìÉ^ÉXÉNÇ™
QASync
ì‡Ç≈ÉuÉçÉbÉNǵǃǢÇÈä‘ÅAÉGÉìÉWÉìÇ…ÇÕé¿çséûä‘Ç™ó^ǶÇÁÇÍÇ‹Ç∑ÅB
éQçlï∂å£
RAVE ÇÃÉhÉLÉÖÉÅÉìÉgÇ…ÇÕ 3D
ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃç\ízÇ…ä÷Ç∑ÇÈÇ∑ÇŒÇÁǵǢï∂å£Ç™è–âÓÇ≥ÇÍǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÅAì¡Ç…
3D ÉQÅ[ÉÄÇÃê›åvÇ…ä÷Ç∑ÇÈèëê–Çè–âÓǵNjÇ∑ÅB
Zen of Graphics Programming, Michael Abrash,
ISBN: 1883577896
Black Art of Game Programming, Andre Lamothe, ISBN:
1571690042
Black Art of Macintosh Game Programming, Kevin
Tieskoetter, ISBN: 157169059
Ç≥ÇÁÇ…ÅAÅuGame Developer
MagazineÅvÇ…ÇÕÅA3D
ÉAÉNÉZÉâÉåÅ[É^ÅAÉGÉìÉWÉìÇÃê›åvÅAÉeÉNÉXÉ`ÉÉä«óùÇ…ä÷Ç∑ÇÈÇ∑ÇŒÇÁǵǢãLéñÇ™åfç⁄Ç≥ÇÍǃǢNjÇ∑ÅB
|
|